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

Optimizar una consulta GROUP BY/ORDER BY

Estas en el tema de Optimizar una consulta GROUP BY/ORDER BY en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/07/2011, 11:22
Avatar de 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?
  #2 (permalink)  
Antiguo 22/07/2011, 05:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Optimizar una consulta GROUP BY/ORDER BY

SELECT * FROM TABLA
GROUP BY B

Esto funciona?

Supongamos que tienes

TABLA
A.... B .....
1.....1......
2.....1......
3.....2.....

Para el grupo donde B=1 que valor te da de A?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: group, select, tabla
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 16:06.