SQL - Rendimiento de una consulta

 
Vista:

Rendimiento de una consulta

Publicado por jokings80 (10 intervenciones) el 21/08/2012 16:30:46
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!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Rendimiento de una consulta

Publicado por leonardo_josue (1173 intervenciones) el 21/08/2012 18:32:23
Hola de nuevo jokings80:

No tengo conocimientos de PHP, pero en lo particular optaría por la opción de hacer una consulta... tal como lo mencionas, hacer 30 consultas a la BD puede resultar muy costoso... en cuanto a la lentitud de las consultas, ten mucho cuidado con la creación de los índices suficientes para agilizar la consulta. Ignoro si en realidad sean necesarios los arreglos para hacer lo que quieres, sería conveniente que coloques la pregunta en el foro de PHP para que los expertos en el tema te den su punto de vista.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Rendimiento de una consulta

Publicado por xve (284 intervenciones) el 21/08/2012 19:11:00
Estoy completamente de acuerdo con Leonardo... utiliza una sola consulta y que este bien indexada... php trabaja mas rapido con el vector resultante que mysql haciendo 30 consultas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rendimiento de una consulta

Publicado por jokings80 (10 intervenciones) el 22/08/2012 16:20:11
Hola!!

Muchas gracias de nuevo. No estaba muy seguro de dónde colocar la pregunta y finalmente me decidí por hacerlo aquí.

Gracias por responder. Es una verdadera ayuda!! :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar