Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta de miles de registros por un novato

Estas en el tema de Consulta de miles de registros por un novato en el foro de Mysql en Foros del Web. Hola, Tengo una aplicacion, la cual muestro productos, son mas de 6000 productos. Para mostrar los productos, el listado inicial hago una llamada Ajax a ...
  #1 (permalink)  
Antiguo 27/05/2014, 06:38
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años, 1 mes
Puntos: 10
Consulta de miles de registros por un novato

Hola,

Tengo una aplicacion, la cual muestro productos, son mas de 6000 productos.

Para mostrar los productos, el listado inicial hago una llamada Ajax a un PHP que es el que trae todos los productos de una con una simple consulta

Código MySQL:
Ver original
  1. SELECT * FROM productos;

Hago una paginacion con Javascript, ya que para despues filtrar esos 6000 productos, tengo un buscador que va filtrando resultados de manera instantanea, este buscador no tarda mucho en filtrar.

Lo que tarda es la consulta a la base de Datos, se demora de 5 a 7 segundos cada vez que la hace.

Soy muy novato con bases de datos. Espero que pueda optimizar la consulta.

Gracias.
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #2 (permalink)  
Antiguo 28/05/2014, 09:52
 
Fecha de Ingreso: febrero-2008
Mensajes: 115
Antigüedad: 16 años, 9 meses
Puntos: 4
Respuesta: Consulta de miles de registros por un novato

Podrías usar LIMIT en la consulta y antes para "contar" los registros me suena que hay un select COUNT(*)
__________________
Estrella 923
  #3 (permalink)  
Antiguo 28/05/2014, 11:47
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Consulta de miles de registros por un novato

Gracias por responder,

Pero creo que no me sirve, ya que si uso LIMIT no trae todos los registros, si no los que estoy limitando. Quizas me equivoque, pero creo que es asi.

Por otro lado no entiendo bien el uso de count, podrias explicar un poco mas?

Gracias
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #4 (permalink)  
Antiguo 28/05/2014, 13:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta de miles de registros por un novato

Una consutla de este tipo:
Código MySQL:
Ver original
  1. SELECT * FROM productos;
Es total y absolutamente imposible de optimizar, porque es un full table scan. Esto quiere decir que estás pidiendo que lea toda la tabla, sin excepciones.
Una query es optimizable si tiene condiciones de JOIN, o bien tiene condiciones en el WHERE, pero si le pides al DBMS que lea todo, pues leerá todo...

En todo caso deberías plantearte qué condiciones vas a usar para modificar la query de manera que restrinja los resultados a los realmente útiles. Pero no estás diciéndonos nada al respecto.
¿La usas así, en crudo, sin condiciones?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/05/2014, 13:13
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Consulta de miles de registros por un novato

Hola gnzsoloyo,

Como ya dije la consulta es asi, porque necesito todos los datos de la tabla.

id, Nombre, precio de costo, precio de venta, id_marca (que se consulta a otra tabla) y cantidad

El tema de traer todos es porque despues armo la paginacion de resultados con plugin de javascript DataTables.
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #6 (permalink)  
Antiguo 28/05/2014, 13:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta de miles de registros por un novato

Bueno, si lo que tienes que hacer es un full table scan, como dije, no se puede optimizar, al menos a nivel SQL. Y menos aún si la paginación la haces programáticamente... La base solo devuelve lo que le pides y como s elo pides.

Sólo te queda optimizar el harware de servidor, la LAN, el hosting, y configuraciones de buffer de consultas (no sé si tienes permisos para tanto).

Con la query, tal como la usas, no se puede hacer nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 28/05/2014, 13:29
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Consulta de miles de registros por un novato

Tenes toda la razon, estuve investigando un poco y dataTables tiene una opcion para tomar los datos desde php de forma que es mas rapida la consulta, en realidad es como una paginacion ajax.

Gracias de todas formas.
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL

Etiquetas: miles, php, registros, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:43.