Consulte o link abaixo para mais detalhes
https://dev.mysql.com/doc /refman/8.0/en/table-scan-avoidance.html
a causa da verificação completa da tabela está abaixo
-
A tabela é tão pequena que é mais rápido realizar uma varredura de tabela do que se preocupar com uma pesquisa de chave. Isso é comum para tabelas com menos de 10 linhas e um comprimento de linha curto.
-
Não há restrições utilizáveis na cláusula ON ou WHERE para colunas indexadas.
-
Você está comparando colunas indexadas com valores constantes e o MySQL calculou (com base na árvore de índice) que as constantes cobrem uma parte muito grande da tabela e que uma varredura de tabela seria mais rápida
-
Você está usando uma chave com baixa cardinalidade (muitas linhas correspondem ao valor da chave) por meio de outra coluna. Neste caso, o MySQL assume que usando a chave ele provavelmente fará muitas pesquisas de chave e que uma varredura de tabela seria mais rápida.
para evitar o uso de varredura de tabela completa abaixo:
-
Use ANALYZE TABLE tbl_name para atualizar as distribuições de chaves para a tabela verificada.
-
Use FORCE INDEX para a tabela escaneada para informar ao MySQL que as varreduras de tabela são muito caras comparadas ao uso do índice fornecido:
por exemplo. SELECT * FROM t1, t2 FORCE INDEX (index_for_column)WHERE t1.col_name=t2.col_name;