Mysql
 sql >> Database >  >> RDS >> Mysql

Configurazione dell'indice MySQL

Aggiornamento:

Vedi questo articolo nel mio blog per un'analisi più dettagliata del problema:

Quando emetti qualcosa come LIMIT 150000, 10 , significa che MySQL dovrebbe attraversare questi 150,000 record e trova il prossimo 10 .

L'attraversamento dell'indice è lento in MySQL .

Inoltre, MySQL non è in grado di eseguire ricerche nelle ultime righe.

In teoria, se fai ORDER BY id LIMIT 100000, 10 , è sufficiente utilizzare l'indice per trovare i valori da 100000 a 100010 , quindi cerca solo 10 righe che soddisfano quell'indice e le restituiscono.

Tutti i principali sistemi tranne MySQL ne sono consapevoli e cercano le righe solo se i valori devono essere davvero restituiti.

MySQL , tuttavia, cerca in ogni riga.

Prova a riscrivere la tua query in questo modo:

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