Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/07/2011, 11:22
Avatar de Sharak
Sharak
 
Fecha de Ingreso: diciembre-2002
Mensajes: 26
Antigüedad: 21 años, 4 meses
Puntos: 0
Pregunta Optimizar una consulta GROUP BY/ORDER BY

Hola a todos:

Tengo una consulta que me está dando mucha guerra. El caso es que he conseguido sacar los datos que quería pero al invertir el orden se me empieza a descontrolar el EXPLAIN (Using filesort, Using temporary, ...)

Os cuento. Tengo una tabla con la siguiente estructura:

A - int(11)
B - int(11)
C - int(11)
D - tinyint(1)
E - tinyint(1)

Índice: IDX (C,E,B,A)

La consulta es la siguiente:
SELECT * FROM TABLA
WHERE C = <UN_NUMERO> AND E = 0
GROUP BY B
ORDER BY A DESC

Si le quito el ORDER BY la consulta usa el índice IDX y me da "Using where" en el EXPLAIN lo cual me resulta aceptable, pero claro, me saca los resultados ordenados por A ASC y yo los quiero justo al revés.

Con el ORDER BY la consulta sigue usando el mismo índice pero me da "Using where, Using temporary, Using filesort" en el EXPLAIN además de un tiempo de unos 12s para realizar la consulta sin caché.

¿Cómo puedo hacer la consulta lo más óptima?