Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego to zapytanie używa adresu zamiast indeksu?

Wyjście EXPLAIN może czasami wprowadzać w błąd.

Na przykład filesort nie ma nic wspólnego z plikami, using where nie oznacza, że ​​używasz WHERE klauzuli i using index mogą pojawiać się na stołach bez zdefiniowanego pojedynczego indeksu.

Using where oznacza tylko, że w tabeli znajduje się klauzula ograniczająca (WHERE lub ON ), a nie wszystkie rekordy zostaną zwrócone. Pamiętaj, że LIMIT nie liczy się jako klauzula ograniczająca (chociaż może być).

Using index oznacza, że ​​wszystkie informacje są zwracane z indeksu, bez szukania rekordów w tabeli. Jest to możliwe tylko wtedy, gdy wszystkie pola wymagane przez zapytanie są objęte indeksem.

Ponieważ wybierasz * , to jest niemożliwe. Pola inne niż category_id , board_id , display i order nie są objęte indeksem i należy je sprawdzić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy poniższy kod jest ważny?

  2. Znajdź pozycję użytkowników na zamówionej tabeli SQL

  3. Limit czasu połączenia JDBC nie może zostać ponownie nawiązany

  4. jqGrid Act Dziwne ponowne ładowanie danych po wstawieniu i aktualizacji

  5. Zapytanie wymagające dopasowania kolumn w klauzuli „Order By” do kolumn w klauzuli „Group by”