Další podrobnosti naleznete na níže uvedeném odkazu
https://dev.mysql.com/doc /refman/8.0/cs/table-scan-avoidance.html
příčina úplného prohledání tabulky je uvedena níže
-
Tabulka je tak malá, že je rychlejší provést skenování tabulky, než se obtěžovat hledáním klíčů. To je běžné u tabulek s méně než 10 řádky a krátkou délkou řádků.
-
V klauzuli ON nebo WHERE pro indexované sloupce nejsou žádná použitelná omezení.
-
Porovnáváte indexované sloupce s konstantními hodnotami a MySQL vypočítalo (na základě indexového stromu), že konstanty pokrývají příliš velkou část tabulky a že skenování tabulky by bylo rychlejší
-
Používáte klíč s nízkou mohutností (hodnotě klíče odpovídá mnoho řádků) přes jiný sloupec. V tomto případě MySQL předpokládá, že s použitím klíče pravděpodobně provede mnoho vyhledávání klíčů a že skenování tabulky by bylo rychlejší.
abyste se vyhnuli úplnému skenování tabulky, použijte níže:
-
Pomocí ANALYZE TABLE tbl_name aktualizujte distribuce klíčů pro naskenovanou tabulku.
-
Pomocí FORCE INDEX pro skenovanou tabulku sdělte MySQL, že skenování tabulek je ve srovnání s použitím daného indexu velmi drahé:
např. SELECT * FROM t1, t2 FORCE INDEX (index_for_column)WHERE t1.col_name=t2.col_name;