Mysql
 sql >> Base de données >  >> RDS >> Mysql

Configuration de l'index MySQL

Mise à jour :

Voir cet article sur mon blog pour une analyse plus détaillée du problème :

Lorsque vous émettez quelque chose comme LIMIT 150000, 10 , cela signifie que MySQL devrait parcourir ces 150,000 enregistre et trouve le prochain 10 .

La traversée de l'index est lente dans MySQL .

Aussi, MySQL n'est pas capable d'effectuer des recherches de lignes tardives.

Théoriquement, si vous faites ORDER BY id LIMIT 100000, 10 , il suffit d'utiliser l'index pour trouver les valeurs à partir de 100000 à 100010 , puis recherchez uniquement 10 lignes qui satisfont cet index et les renvoient.

Tous les principaux systèmes sauf MySQL en sont conscients et ne consultent les lignes que si les valeurs doivent vraiment être renvoyées.

MySQL , cependant, recherche chaque ligne.

Essayez de reformuler votre requête comme suit :

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