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

Wiele indeksów MySQL a indeks wielokolumnowy do wyszukiwania

Musisz zrozumieć, że MySQL (w przypadku InnoDB) używa tylko skrajnego lewego przedrostka twoich indeksów. Jeśli więc indeks znajduje się w Field1 + Field2, zapytanie z tylko Field2 w GDZIE nie może wykorzystać całego indeksu.

A jeśli Field1 + Field2 + Field3 jest indeksem, zapytaniem zawierającym tylko Field1 & Field3 w GDZIE to samo by się stało.

Opcja 1

Jeśli chcesz zoptymalizować każde wyszukiwanie, musisz utworzyć osobny indeks dla każdego scenariusza wyszukiwania. Jeśli jednak tabele są duże, indeksy również staną się bardzo duże. Jeśli te zapytania są wykonywane bardzo często, byłoby to tego warte.

Opcja 2

Możesz użyć sprytnej sztuczki, jeśli Twoje wyszukiwania mają niską selektywność (tj. Płeć), umieszczając kolumny o niskiej selektywności najbardziej z lewej strony i użyj Gender IN(M, F) umieścić go w GDZIE klauzulę wraz z innymi kolumnami, aby wykorzystać cały 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. Czy konieczne jest napisanie ROLLBACK, jeśli zapytania nie powiodą się?

  2. Zablokuj stolik do czytania i pisania

  3. jak wyprowadzić rowName na podstawie tabeli łączącej?

  4. Pobierz wszystkie nazwy tabel, nazwy kolumn i wartości kolumn z określonej bazy danych

  5. Laravel:pobieranie pojedynczej wartości z zapytania MySQL