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

MySQL EXPLAIN:Używanie indeksu a używanie warunku indeksu

Przykład wyjaśnia to najlepiej:

SELECT Year, Make --- possibly more fields and/or from extra tables
FROM myUsedCarInventory
WHERE Make = 'Toyota' AND Year > '2006'

Assuming the Available indexes are:
  CarId
  VIN
  Make
  Make and Year

To zapytanie będzie WYJAŚNIAĆ z „Korzystaniem z indeksu”, ponieważ nie potrzebuje w ogóle , aby „trafić” w samą tabelę myUsedCarInventory, ponieważ indeks „Make and Year” „pokrywa” jej potrzeby w odniesieniu do elementów klauzuli WHERE, które odnoszą się do tej tabeli .

Teraz wyobraź sobie, że zapytanie jest takie samo, ale w celu dodania warunku w kolorze

...
WHERE Make = 'Toyota' AND Year > '2006' AND Color = 'Red'

Zapytanie to prawdopodobnie WYJAŚNIA z użyciem „Using Index Condition” („prawdopodobne”, w tym przypadku, gdy Toyota + rok nie zostanie oszacowany jako wystarczająco selektywny, a optymalizator może zdecydować się po prostu zeskanować tabelę). Oznaczałoby to, że MySQL będzie PIERWSZY użyj indeksu, aby rozwiązać Make + Year i musiałby również wyszukać odpowiedni wiersz w tabeli, tylko dla wiersze spełniające warunki Make + Year. To jest czasami określane jako „optymalizacja push-down ".



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data i godzina TERAZ PHP mysql (+ wariant PDO)

  2. Algorytm generowania liczby losowej

  3. SQLSTATE [HY000] [1698] Odmowa dostępu dla użytkownika 'root'@'localhost'

  4. '𠂉' Nie jest prawidłowym znakiem Unicode, ale w zestawie znaków Unicode?

  5. Uzyskaj identyfikator ostatnio wstawionego rekordu w mybatis