MySQL - select count(distinct) muy lento

 
Vista:

select count(distinct) muy lento

Publicado por Francisco Villa Ramos (1 intervención) el 10/02/2006 19:03:45
Hola a todos.

Actualmente tengo una tabla que me guarda un usuario asi como su hora de entrada. Esta tabla tiene propositos estadisticos, asi que ahora me estan pidiendo cual es el numero de usuarios diferentes que tengo en un determinado intervalo de tiempo (hora, dia, mes) de acuerdo a su hora de acceso. Lo que se me ocurrio fue lo siguiente:

select count(distinct(loginName)) as usuarios, extract(YEAR_MONTH FROM startDate)
as año_mes, extract(DAY FROM startDate) as dia, extract(HOUR FROM startDate) as hora from EntradaUsuarios
where startDate between '2006-01-01' and '2006-01-31'
group by 2, 3, 4 order by 2, 3, 4

la cual me arroga resultados como sigue:
+----------+---------+------+------+
| usuarios | año_mes | dia | hora |
+----------+---------+------+------+
| 2637 | 200601 | 22 | 20 |
| 2592 | 200601 | 22 | 21 |
| 2657 | 200601 | 22 | 22 |
| 2650 | 200601 | 22 | 23 |
| 1 | 200601 | 23 | 0 |
+----------+---------+------+------+

Estos resultados ya me sirven pero tengo una base de mas de un millon de registros y cuando aplico esta sentencia en un intervalo de mas de una semana, el tiempo de procesamiento se va hasta 50 segs!!!! 330 rows in set (51.50 sec)

¿Alguna sugerencia para optimizar esta consulta?

Saludos a todos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder