Вижте връзката по-долу за повече подробности
https://dev.mysql.com/doc /refman/8.0/en/table-scan-avoidance.html
причината за пълното сканиране на таблицата е по-долу
-
Таблицата е толкова малка, че е по-бързо да се извърши сканиране на таблица, отколкото да се занимавате с търсене на ключ. Това е обичайно за таблици с по-малко от 10 реда и малка дължина на реда.
-
Няма приложими ограничения в клаузата ON или WHERE за индексирани колони.
-
Вие сравнявате индексирани колони с постоянни стойности и MySQL е изчислил (въз основа на дървото на индекса), че константите покриват твърде голяма част от таблицата и че сканирането на таблица ще бъде по-бързо
-
Използвате ключ с ниска кардиналност (много редове съответстват на стойността на ключа) през друга колона. В този случай MySQL приема, че с помощта на ключа вероятно ще направи много търсения на ключове и че сканирането на таблица ще бъде по-бързо.
за да избегнете пълно сканиране на таблица, използвайте по-долу:
-
Използвайте ANALYZE TABLE tbl_name, за да актуализирате разпределенията на ключовете за сканираната таблица.
-
Използвайте FORCE INDEX за сканираната таблица, за да кажете на MySQL, че сканирането на таблица е много скъпо в сравнение с използването на дадения индекс:
напр. SELECT * FROM t1, t2 FORCE INDEX (index_for_column)WHERE t1.col_name=t2.col_name;