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

Como hacer mas rapida una consulta

Estas en el tema de Como hacer mas rapida una consulta en el foro de Mysql en Foros del Web. bueno tengo una base de datos con 14 mil usuarios dentro de sus campos estan nombre, apellido paterno y materno y fecha y tengo una ...
  #1 (permalink)  
Antiguo 17/02/2011, 17:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Como hacer mas rapida una consulta

bueno tengo una base de datos con 14 mil usuarios

dentro de sus campos estan

nombre, apellido paterno y materno y fecha


y tengo una pagina en php ke al cargar lo ke hace es esto

Código:
select fecha from usuarios group by fecha
y el resultado de esa consulta es algo asi :


2000
2001
2001
.
.
.
2010
2011

pero el problema es ke tarda muuucho en hacer esa consulta por lo tanto la pagina tarda mucho en abrir.

alguno sabrá la manera de optimizar esa consulta?????
  #2 (permalink)  
Antiguo 18/02/2011, 02:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como hacer mas rapida una consulta

De entrada definir un indice (no unico) sobre el campo fecha y luego creo que sera mas rapida esta que la tuya

SELECT DISTINCT fecha FROM usuarios ORDER BY fecha;

Si no es suficientemente rápida

Cita:
La cláusula FROM table_references indica la tabla desde la que recibir registros. Si nombra más de una tabla, está realizando un join, Para información sobre la sintaxis de join, consulte Sección 13.2.7.1, “Sintaxis de JOIN”. Para cada tabla especificada, puede opcionalmente especificar un alias.

tbl_name [[AS] alias]
[[USE INDEX (key_list)]
| [IGNORE INDEX (key_list)]
| [FORCE INDEX (key_list)]]

El uso de USE INDEX, IGNORE INDEX, FORCE INDEX para dar al optimizador pistas acerca de cómo escoger los indices se describe en Sección 13.2.7.1, “Sintaxis de JOIN”.

En MySQL 5.0, puede usar SET max_seeks_for_key=value como alternativa para forzar a MySQL a que realice escaneos de claves en lugar de escaneos de tabla.
12.2.8.2. Index Hint Syntax


SELECT DISTINCT fecha FROM usuarios USE INDEX (nombre_indice_fecha) ORDER BY fecha

Creo que obtendrás una mejora que te va a sorprender...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 18/02/2011 a las 03:06
  #3 (permalink)  
Antiguo 18/02/2011, 10:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Como hacer mas rapida una consulta

hice un indice en fechas y con la consulta con distinct kedó de lujo man

oye una pregunta cual es la diferencia entre group by y distinct
  #4 (permalink)  
Antiguo 18/02/2011, 10:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Como hacer mas rapida una consulta

GROUP BY lee todo y luego agrupa. DISTINCT descarta lo repetido respecto de lo que ya encontró a medida que va leyendo.
__________________
¿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 18/02/2011, 11:16
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Como hacer mas rapida una consulta

ah genial bueno ya kedó

muchas gracias a los dos por sus respuestas

Etiquetas: mas, rapida
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 07:36.