Página 1 de 1

Rendimiento de una consulta

NotaPublicado: Mar Ago 21, 2012 3:34 pm
por jokings80
Hola,

Tengo una página PHP donde se crea una tabla que representa un calendario (cada celda es un día). Y lo que necesito es que en cada celda se muestren las ventas que se hicieron ese día (hasta un máximo de dos registros).

Mi duda es, qué es mejor y, sobre todo, más rápido de entre estas dos opciones. Si se os ocurre alguna, sin duda será bienvenida.

1.- Hacer 30 consultas (28 o 31 depende del mes) a la base de datos donde se recuperen las ventas de ese día. Cuando se crea la celda de la tabla, se hace la consulta y se recuperan los datos de la/s ventas que habría que mostrar para el día que representa esa celda (como mucho dos).

2.- Hacer una única consulta donde se recuperan las ventas de todo el mes y después procesar los datos de la consulta guardándolos en vectores para tratarlos al crear la tabla del calendario. Es decir, por ejemplo tener 2 vectores de 30 (28 o 31) posiciones, una por día y guardar en un vector el código de la primera venta en la posición X para el día X y en otro el código de la segunda venta en la posición X para el día X. La posición del vector representaría el día. Con esto nos ahorraríamos las 30 consultas a la base de datos.

La base de datos tendría entre 500.000 y 1.000.000 de registros, por ello que me preocupa mucho el tema del rendimiento.

La primera opción parece más "limpia", pero las 30 consultas cada vez que se cargue la página me hacen dudar mucho de la rapidez de esa opción.

¿Qué os parece?

Gracias por la ayuda!!

Editado por el moderador (mauricio) para mover el tema a un subforo apropiado. Si no lo has hecho aún por favor lee la Guía de supervivencia

Re: Rendimiento de una consulta

NotaPublicado: Mar Ago 21, 2012 3:50 pm
por SLV-es
No creo que este sea el foro adecuado, pero me voy a atrever a contestar.

Creo que es mejor hacer una consulta que devuelva 30 datos, que no 30 consultas de un dato, más si la base de datos es grande, y mucho más si no está en local o red, sino en intra-internet.

Y creo que te olvidas de una opción: Una consulta de 30 datos que devuelva las ventas de cada día ya procesadas, al menos, hasta el punto que te permitan los datos existentes en la base de datos.

Finalmente, ten en cuenta que PHP se ejecuta en el servidor, no en el ordenador local, por lo que creo, y recalco, creo, que es más conveniente escribir consultas que resuelva el servidor de base de datos, que escribir código para procesar los datos, si es que puede hacerse desde las consultas, claro.

Saludos

Re: Rendimiento de una consulta

NotaPublicado: Mié Ago 22, 2012 3:23 pm
por jokings80
Hola,

No estaba muy seguro de dónde oner la pregunta, por eso lo hice aquí. Lo siento si no era el lugar adecuado.

Gracias por responder, ha sido de gran ayuda.