Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/06/2012, 08:44
Avatar de gnzsoloyo
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, 9 meses
Puntos: 2658
Respuesta: Indexando tablas en MySQL

Cita:
Iniciado por Giolink1 Ver Mensaje
Utiliza índices únicos, los índices trabajan mejor sobre columnas con valores único, y peor con aquellas que tiene muchos valores duplicados. Saludos :)
Un indice UNIQUE es en esencia la declaración de una clave candidata, y es inaplicable en el caso de este thread (que por si no lo notaste, es demasiado viejo).
En realidad el problema es que quiere contar los diferentes ID de los registros, por lo que lo que hace MYSQL es acudir al indice primario, y en ese caso el resultado será siempre el mismo, porque siempre usará sólo ese índice.
Para que se pueda pueda optimizar, habría que omitir ese campo en el COUNT y el ID en el WHERE. Recién allí un indice por fecha daría algún resultado.
Y el hecho que los UNIQUE sean más "eficientes", no implica que sean los mejores en un caso. Eso no lo define la unicidad de la clave3, sino la cantidad de registros devueltos, que en el caso de buscar rangos de fechas los INDEX, muy probablemente sean mejores.
Además, recuerda que a más indices en las tablas, la performance global se reduce. No siempre es mejor. Por eso la optimziación tiene reglas globales, pero no se pueden aplicar a todos los casos. Cada caso debe ser analizado en el contexto del sistema y de los datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)