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

Indeksy i kolejność MySQL

Kolejność indeksowania ma znaczenie, gdy warunki zapytania dotyczą tylko PART indeksu. Rozważ:

  1. SELECT * FROM table WHERE first_name="john" AND last_name="doe"

  2. SELECT * FROM table WHERE first_name="john"

  3. SELECT * FROM table WHERE last_name="doe"

Jeśli Twój indeks to (first_name , last_name ) użyją go zapytania 1 i 2, zapytanie #3 nie. Jeśli indeks to (last_name , first_name ) zapytania 1 i 3 będą go używać, zapytanie #2 nie. Zmiana kolejności warunkowej w ramach klauzuli WHERE w obu przypadkach nie ma wpływu.

Szczegóły znajdziesz tutaj

Aktualizacja :
W przypadku, gdy powyższe nie jest jasne - MySQL może używać indeksu tylko wtedy, gdy kolumny w warunkach zapytania tworzą skrajny lewy przedrostek indeksu. Zapytanie #2 powyżej nie może użyć (last_name , first_name ) indeks, ponieważ opiera się tylko na first_name i first_name NIE jest przedrostkiem z lewej strony (last_name , first_name ) indeks.

Kolejność warunków W zapytaniu nie ma znaczenia; zapytanie nr 1 powyżej będzie mogło użyć (last_name , first_name ) indeks dobrze, ponieważ jego warunki to first_name i last_name i razem wzięte tworzą skrajnie lewy przedrostek (last_name , first_name ) indeks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ckfinder php 2.6.2 widok ustawień, wyświetlanie, sortowanie nie działa

  2. Wybierz dane z tabel pokaż zapytanie MySQL

  3. Laravel 5.3 Tworzenie modeli Pole zwraca nie ma wartości domyślnej

  4. Zapytanie o aktywne rekordy Codeignitera zajmuje zbyt dużo czasu, aby wczytać dane z bazy danych

  5. MySQL Select Query — Uzyskaj tylko pierwsze 10 znaków wartości