Limite de linhas do MySQL Explain
Abaixo está minha consulta para obter 20 linhas com genre_id 1.
EXPLAIN SELECT * FROM (`content`)
WHERE `genre_id` = '1'
AND `category` = 1
LIMIT 20
Eu tenho total 654 linhas na tabela de conteúdo com genre_id 1, eu tenho índice em genre_id e na consulta acima Estou limitando resultado para exibir apenas 20 registros que está funcionando bem, mas explicar está mostrando 654 registros em linhas, tentei adicionar índice na categoria mas ainda o mesmo resultado e depois também removi AND category = 1 mas as mesmas linhas contam:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE content ref genre_id genre_id 4 const 654 Using where
AQUI Eu encontrei a resposta
LIMIT não é levado em consideração durante a estimativa do número de linhas Mesmo se você tiver LIMIT que restringe quantas linhas serão examinadas, o MySQL ainda imprime o número completo
Mas também Nos comentários, outra resposta foi publicada:
LIMIT agora é levado em conta ao estimar o número de linhas. Não sei qual versão aborda isso, mas em 5.1.30, o EXPLAIN leva em consideração com precisão o LIMIT.
Eu estou usando o MySQL 5.5.16 com InnoDB. de acordo com o comentário acima, ele ainda não leva em consideração. Então, minha pergunta é que o mysql percorre todas as 654 linhas para retornar 20 linhas, mesmo que eu tenha definido o limite? obrigado