Zależy od tego, do czego dążysz i jakie jest zapytanie.
Ogólnie rzecz biorąc, dla każdego wiersza w EXPLAIN, który ma Using where
, musisz mieć to za pomocą indeksu (possible keys
i keys
kolumna). To są twoje filtry i obejmują GDZIE i WŁĄCZ. Mówiąc Using index
jest jeszcze lepszy. Oznacza to, że istnieje indeks pokrywający, a MySQL może pobierać dane bezpośrednio z indeksu, zamiast odwiedzać wiersz w tabeli danych.
Linie, w których nie ma Using where
i zwraca dużą liczbę wierszy. Są to wartości zwracane dla wszystkich wierszy w tabeli. Nie wiem, jakie jest twoje zapytanie, więc nie wiem, czy mam się tu niepokoić. Spróbuj przefiltrować zestaw wyników, aby zmniejszyć rozmiar i poprawić wydajność.
Generalnie powinieneś unikać oglądania Using filesort
lub Using temporary
, chociaż są one złe tylko wtedy, gdy się ich nie spodziewasz.
Filesort zwykle pojawia się z klauzulą ORDER. Generalnie chcesz, aby MySQL używał indeksu pokrywającego (Using index
), aby wiersze zostały zwrócone już w kolejności z serwera. Jeśli tak nie jest, MySQL musi je później zamówić, używając sortowania plików.
Using temporary
może być zły, gdy odnosi się do tabel pochodnych, ponieważ nie mają indeksów. Wygląda na to, że jawnie utworzyłeś tabelę tymczasową z indeksami, więc tutaj nie jest źle. Czasami jedynym wyborem jest użycie tabeli pochodnej, a zatem Using temporary
.