Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Configuração do índice MySQL


Atualização:

Veja este artigo no meu blog para uma análise mais detalhada do problema:

Quando você emite algo como LIMIT 150000, 10 , significa que MySQL deve percorrer estes 150,000 registros e encontre os próximos 10 .

Percorrer o índice é lento no MySQL .

Além disso, MySQL não é capaz de fazer pesquisas de linha tardias.

Teoricamente, se você fizer ORDER BY id LIMIT 100000, 10 , basta usar o índice para encontrar os valores de 100000 para 100010 , procure apenas 10 linhas que satisfazem esse índice e as retornam.

Todos os principais sistemas, exceto MySQL estão cientes disso e procuram as linhas apenas se os valores realmente forem retornados.

MySQL , no entanto, procura cada linha.

Tente reescrever sua consulta assim:
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