sql >> Base de Datos >  >> RDS >> Mysql

Configuración del índice mysql

Actualización:

Vea este artículo en mi blog para un análisis más detallado del problema:

Cuando emites algo como LIMIT 150000, 10 , significa que MySQL debe atravesar estos 150,000 registros y encuentra el siguiente 10 .

Atravesar el índice es lento en MySQL .

Además, MySQL no es capaz de realizar búsquedas de filas tardías.

Teóricamente, si haces ORDER BY id LIMIT 100000, 10 , es suficiente usar el índice para encontrar los valores de 100000 a 100010 , luego busca solo 10 filas que satisfacen ese índice y las devuelven.

Todos los sistemas principales excepto MySQL son conscientes de ello y miran las filas hacia arriba solo si los valores realmente se van a devolver.

MySQL , sin embargo, busca cada fila.

Intente reescribir su consulta como esta:

SELECT  news.*
FROM    (
        SELECT  id
        FROM    news
        WHERE   cat_id='4'
        ORDER BY
                id DESC
        LIMIT 150000, 10
        ) o
JOIN    news
ON      news.id = o.id