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

Czy istnieje optymalna metoda zamawiania indeksu złożonego MySQL?

Zasadniczo w indeksie wielokolumnowym chcesz, aby kolumny o największej kardynalności, czyli innymi słowy, o największej liczbie odrębnych wartości, znajdowały się na pierwszym miejscu w indeksie.

Aby być bardziej dokładnym, najpierw chcesz kolumnę z najmniejszą możliwą liczbą dopasowań do kryteriów wyszukiwania, aby móc maksymalnie zawęzić zestaw wyników, ale ogólnie jest to to samo, co najwyższa kardynalność.

Tak więc w twoim przykładzie chcesz, aby kolumna, która będzie zawierała miliony odrębnych wartości, znajdowała się w indeksie przed kolumną z tylko 6 różnymi wartościami.

Zakładając, że wybierasz tylko jeden wiersz z milionów wartości, pozwala to szybciej wyeliminować więcej wierszy.

Rozważając dwie kolumny o podobnej kardynalności, umieść mniejszą jako pierwszą (INTEGER kolumny przed VARCHAR kolumn), ponieważ MySQL może je porównywać i iterować szybciej.

Jedynym zastrzeżeniem jest to, że jeśli wybierasz z zakresami (np. WHERE datecol > NOW() ), wtedy chcesz, aby kolumny zakresu znajdowały się najdalej po prawej stronie, a kolumny z pojedynczą stałą (np. WHERE id = 1 ) w lewo. Dzieje się tak, ponieważ Twój indeks może być używany tylko do wyszukiwania i porządkowania do punktu pierwszej wartości zakresu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqldump z utf8 nie może wyeksportować prawidłowego ciągu emoji

  2. Ansible idempotentny podręcznik instalacji MySQL

  3. MySQL:daty sprzed 1970 r.

  4. C# — Pobieranie danych z MySQL i porządkowanie ich na stronach bez DataGridView

  5. Jak przeszukiwać tablicę JSON w MySQL?