Zapoznaj się z poniższym linkiem, aby uzyskać więcej informacji
https://dev.mysql.com/doc /refman/8.0/pl/table-scan-avoidance.html
przyczyna pełnego skanowania tabeli jest poniżej
-
Tabela jest tak mała, że szybciej jest wykonać skanowanie tabeli niż zawracać sobie głowę wyszukiwaniem kluczy. Jest to typowe w przypadku tabel z mniej niż 10 wierszami i krótką długością wiersza.
-
Nie ma żadnych użytecznych ograniczeń w klauzuli ON lub WHERE dla indeksowanych kolumn.
-
Porównujesz indeksowane kolumny z wartościami stałymi, a MySQL obliczył (na podstawie drzewa indeksów), że stałe pokrywają zbyt dużą część tabeli i że skanowanie tabeli byłoby szybsze
-
Używasz klucza o niskiej kardynalności (wiele wierszy pasuje do wartości klucza) w innej kolumnie. W tym przypadku MySQL zakłada, że używając klucza prawdopodobnie wykona wiele wyszukiwań kluczy i że skanowanie tabeli będzie szybsze.
aby uniknąć pełnego skanowania tabeli, użyj poniżej:
-
Użyj ANALYZE TABLE nazwa_tabeli, aby zaktualizować rozkłady kluczy dla skanowanej tabeli.
-
Użyj FORCE INDEX dla skanowanej tabeli, aby poinformować MySQL, że skanowanie tabeli jest bardzo kosztowne w porównaniu z użyciem podanego indeksu:
np. WYBIERZ * Z t1, t2 INDEKS SIŁY (indeks_dla_kolumny)GDZIE t1.col_name=t2.col_name;