Mam stolik "zajęcia". składa się z około miliona rekordów. jego kolumny składają się,
id (PK), u_id (FK), cl_id (FK), activity_log
Domyślnie id (PK) jest indeksowany i utworzyłem własny indeks dla u_id i cl_id przy użyciu,
ALTER TABLE activities ADD INDEX(u_id,cl_id);
Teraz chciałbym stworzyć Indeksowanie wielopoziomowe dla cl_id (FK) lub id (PK) lub dla obu kolumn, jeśli jest to możliwe. Jak utworzyć wielopoziomowy indeks za pomocą zapytania?
Jak znaleźć kolumnę wielopoziomową zindeksowaną w tabeli? Próbowałem tej kwerendy, ale pokazuje tylko kolumna, które są indeksowane,
SHOW indexes FROM activities;
Czy indeks wielopoziomowy i indeks nieklastrowy są takie same?
Odpowiedzi:
0 dla odpowiedzi № 1Nie mam pojęcia, co to jest indeks "wielopoziomowy". Ale istnieją "złożone" indeksy takie jak
INDEX(last_name, first_name)
co jest bardzo przydatne dla
WHERE last_name = "James"
AND first_name = "Rick"
lub nawet
WHERE last_name = "James"
AND first_name LIKE "R%"
W MySQL (w szczególności InnoDB), PRIMARY KEY
jest zawsze unikalnym indeksem i jest "zgrupowany" z danymi. Oznacza to, że szukanie w rzędzie przez PK jest bardzo skuteczne. Struktura jest zawsze BTree.
"Drugorzędne klawisze" to również "Kończy się", ale węzeł liścia zawiera PK. Tak więc do zakończenia zapytania potrzebne jest drugie wyszukiwanie. (To rozróżnienie rzadko jest nic warte.)
PK i / lub klucze dodatkowe mogą być "złożone".
Zgłaszanie a FOREIGN KEY
dodaje indeks wtórny, jeśli nie ma już odpowiednich (PRIMARY
lub wtórny) indeks rozpoczynający się od kolumny w FK.
Poniższe informacje są zbędne i należy ich unikać:
PRIMARY KEY(id),
INDEX(id) -- DROP this
Sekwencyjne indeksowane
Oooo! Nie słyszałem o tej przestarzałej metodzie indeksowania od prawie dwóch dekad.
Pytanie podaje link do takiej definicji "wielopoziomowego" indeksowania. Uciekajcie z tego! Zmień szkoły. Albo przynajmniej zrozum, że IS nie jest już uważany za wykonalny.
MySQL używa "BTrees" dla większości indeksowania. Został wymyślony dziesiątki lat temu i zasadniczo usunął indeksowaną sekwencję. I, w dużej mierze, zmienił Hashing jako technikę indeksowania na dysku.
Kontakty MySQL mogą obsługiwać wiele kolumn, tak jak w moim przykładzie powyżej.