Saltar al contenido

MySQL ORDER BY DESC es rápido pero ASC es muy lento

Solución:

Su índice está ordenado desc, por lo que cuando solicita ascender, debe hacer mucho más trabajo para devolverlo en ese orden

No le sugiero que cree otro índice sobre la mesa; cada vez que se inserta o elimina una fila, cada índice de la tabla debe actualizarse, lo que se ralentiza INSERT consultas.

El índice es definitivamente lo que lo está frenando. Tal vez podrías intentar IGNORE-haciéndolo:

SELECT posts.id
FROM posts IGNORE INDEX (published)
WHERE posts.feed_id IN ( 4953,622,1,1852,4952,76,623,624,10 )
ORDER BY posts.published ASC
LIMIT 0, 50;

O, dado que el campo ya está KEYed, puede intentar lo siguiente:

SELECT posts.id
FROM posts USE KEY (published)
WHERE posts.feed_id IN ( 4953,622,1,1852,4952,76,623,624,10 )
ORDER BY posts.published ASC
LIMIT 0, 50;

Primero puede obtener su conjunto de datos y luego ordenarlo.

Algo como

SELECT posts.id FROM (
SELECT posts.id
FROM posts USE INDEX (published)
WHERE posts.feed_id IN ( 4953,622,1,1852,4952,76,623,624,10 )
LIMIT 0, 50
)
order by postS.id ASC;

Primero debe usar el índice para encontrar todos los registros que satisfagan su declaración “dónde”, y los ordenará. Pero la orden se realizaría en un conjunto más pequeño. Pruébalo y luego cuéntanoslo.

Atentamente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *