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

Consulta lenta (select)

Estas en el tema de Consulta lenta (select) en el foro de Mysql en Foros del Web. Hola, tengo una tabla PRODUCTOS con lo siguientes campos id nombre (nombre del producto) visitas (numero de visitas de la pagina del producto) fecha (fecha ...
  #1 (permalink)  
Antiguo 01/12/2010, 23:58
 
Fecha de Ingreso: junio-2007
Mensajes: 30
Antigüedad: 16 años, 9 meses
Puntos: 0
Mensaje Consulta lenta (select)

Hola,

tengo una tabla PRODUCTOS con lo siguientes campos

id
nombre (nombre del producto)
visitas (numero de visitas de la pagina del producto)
fecha (fecha en que se agrego el producto a la base de datos)


Lo que busco es obtener el id y nombre de los 20 productos con mas visitas, pero sólamente los que se agregaron HOY!

lo he hecho asi:

Código PHP:
$hoy gmdate('Y-m-d');

SELECT id,nombre FROM productos where fecha $hoy order by hits desc limit 20 
Pero el "registro de consultas lentas" del servidor me dice que esta consulta esta tomando demasiado tiempo pues examina todos las filas de la db.

Alguna otra manera para hacerlo y que consuma menos recursos del servidor?

Agradezco su ayuda

Última edición por Stoneplus; 02/12/2010 a las 00:10
  #2 (permalink)  
Antiguo 02/12/2010, 01:45
 
Fecha de Ingreso: noviembre-2010
Mensajes: 38
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Consulta lenta (select)

Si este será un query habitual, te recomiendo que crees un indice por fecha.

Suerte!
  #3 (permalink)  
Antiguo 02/12/2010, 02:12
 
Fecha de Ingreso: junio-2007
Mensajes: 30
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Consulta lenta (select)

Ajá! sabía que por ahí iba la cosa, pero como hago eso que dices? podrías decirme por favor.

Gracias
  #4 (permalink)  
Antiguo 02/12/2010, 08:07
 
Fecha de Ingreso: noviembre-2010
Mensajes: 38
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Consulta lenta (select)

La documentación de la sentencia CREATE INDEX la puedes encontrar en: http://dev.mysql.com/doc/refman/5.0/en/create-index.html

Yo hace mucho que no trabajo con mysql, pero sería algo así:

CREATE INDEX nombre_indice ON productos (fecha);

Etiquetas: lenta, 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 06:33.