Cita:
Iniciado por Giolink1 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.