Indexy sú veľmi nápomocné. Bez nich musí MySQL skenovať celú tabuľku, aby našiel príslušné riadky a stĺpce, čo môže byť vo veľkých databázach veľmi neefektívne.
Tento tutoriál sa zameria na to, ako zobraziť informácie o indexe pomocou klauzuly SHOW INDEXES v MySQL.
Zobraziť indexy tabuliek
Na zobrazenie informácií o indexe v tabuľke používame klauzulu SHOW INDEXES, za ktorou nasleduje názov tabuľky, z ktorej chceme získať informácie o indexe.
Všeobecná syntax je zobrazená ako:
ZOBRAZIŤ INDEXY tbl_name;
Zoberme si napríklad jednu z tabuliek vo vzorovej databáze Sakila. Informácie o indexe môžeme získať podľa nižšie uvedeného dopytu:
POUŽIJTE sakilu;ZOBRAZIŤ INDEXY Z filmu;
Vyššie uvedený dotaz zobrazí informácie o indexe z tabuľky filmov v databáze Sakila. Výstupom je:
Pochopenie informácií o indexe
Príkaz ZOBRAZIŤ INDEXY zobrazí relevantné informácie o indexoch v uvedenej tabuľke.
Tu sú uvedené nasledujúce podmienky a ich príslušné informácie:
- Tabuľka: Toto je prvý stĺpec z výstupu. Zobrazuje názov tabuľky, v ktorej sa nachádza index.
- Jedinečné: Druhý stĺpec ukazuje, či index môže obsahovať duplikát. Hodnota je logická, pričom 1 znamená, že index môže obsahovať duplikáty, a 0, ak je to inak.
- Key_name: Tretí stĺpec zobrazuje názov indexu. Podľa konvencie primárny kľúč preberá indexový názov PRIMARY.
- Sekv_in_index: Štvrtý stĺpec zobrazuje poradové číslo stĺpca v indexe od hodnoty 1.
- Názov stĺpca: Piaty stĺpec je jednoducho názov stĺpca.
- Zoradenie: Šiesty stĺpec je časť, ktorá ukazuje, ako sa stĺpec zoradí v indexe. Existujú tri hodnoty zoradenia, pričom A je Vzostupné poradie, B označuje Zostupné poradie a NULL ako netriedené.
- Mohutnosť: Siedmy stĺpec ukazuje jedinečnosť hodnoty údajov. V indexoch ukazuje odhadovaný počet jedinečných hodnôt v konkrétnom indexe.
- Podčasť: Ôsmy stĺpec zobrazuje predponu indexu s NULL, čo znamená, že je indexovaný celý stĺpec.
- Zabalené: Deviaty stĺpec ukazuje, ako sú balíky indexov zabalené, pričom hodnota NULL naznačuje, že kľúče nie sú zabalené.
- Nulový: Desiaty stĺpec určuje, či stĺpec môže obsahovať NULL hodnoty. Áno, ak stĺpec môže obsahovať nulové hodnoty, a ak nie, prázdny.
- Index_typ: Jedenásty stĺpec zobrazuje metódu indexu, ako napríklad BTREE, HASH, RTREE a FULLTEXT.
- Komentár: V dvanástom stĺpci sú uvedené informácie o indexe, ktorý nie je v jeho stĺpci popísaný.
- Index_comment: V trinástom stĺpci sú uvedené ďalšie informácie o indexe určenom pri vytvorení pomocou atribútu KOMENTÁR.
- Viditeľné: Štrnásty stĺpec je index viditeľný pre optimalizátor dotazov s hodnotami Áno a Nie.
- Výraz: Pätnásty stĺpec sa zobrazí, ak index používa výraz a nie hodnotu predpony stĺpca alebo stĺpca.
TIP: Informácie o indexoch z dotazu SHOW INDEXES sú podobné ako v SQLStatistics.
Zobraziť indexy schémy
Môžete tiež získať informácie o indexe schémy. Všeobecná syntax na dosiahnutie tohto výsledku je nasledovná:
VYBERTE názov_tabulky, názov_ indexu Z INFORMÁCIÍ_SCHEMA.ŠTATISTIKY KDE TABLE_SCHEMA = názov schémy;Zvážte nižšie uvedený dotaz, ktorý zobrazuje informácie o schéme Sakila:
VYBERTE názov_tabulky, názov_indexu ZO informácií_schema.statistika KDE tabuľka_schémy ='sakila';Zobrazí sa informácia o indexoch v schéme Sakila, ako je uvedené v nižšie uvedenom výstupe:
+ --------------- + ----------------------------- +|TABLE_NAME|INDEX_NAME|
+ --------------- + ----------------------------- +
|herec|PRIMÁRNY|
|herec|idx_actor_last_name|
|adresa|PRIMÁRNY|
|adresa|idx_fk_city_id|
|adresa|idx_location|
|kategórie|PRIMÁRNY|
|mesto|PRIMÁRNY|
|mesto|idx_fk_country_id|
|krajina|PRIMÁRNY|
|zákazníka|PRIMÁRNY|
|zákazníka|idx_fk_store_id|
|zákazníka|idx_fk_address_id|
|zákazníka|idx_last_name|
|film|PRIMÁRNY|
|film|idx_title|
|film|idx_fk_language_id|
|film|idx_fk_original_language_id|
|filmový herec|PRIMÁRNY|
|filmový herec|PRIMÁRNY|
|filmový herec|idx_fk_film_id|
|kategória_filmu|PRIMÁRNY|
|kategória_filmu|PRIMÁRNY|
|kategória_filmu|fk_film_category_category|
|film_text|PRIMÁRNY|
|film_text|idx_title_description|
|film_text|idx_title_description|
|inventár|PRIMÁRNY|
|inventár|idx_fk_film_id|
|inventár|idx_store_id_film_id|
|inventár|idx_store_id_film_id|
|----------------------------- VÝSTUP SKRATENÝ ------------------- -------
Informácie môžete tiež získať zo všetkých schém na serveri pomocou nižšie uvedeného dotazu:
VYBERTE názov_tabulky, názov_ indexu ZO_informácie_schema.statistiky;POZNÁMKA : Vyššie uvedený dotaz ukladá veľa informácií. Zriedka budete potrebovať získať indexy zo všetkých schém. Ukážkový výstup je však nasledujúci:
+ -------------------- + ------------ +|TABLE_NAME|INDEX_NAME|
+ -------------------- + ------------ +
|innodb_table_stats|PRIMÁRNY|
|innodb_table_stats|PRIMÁRNY|
|innodb_index_stats|PRIMÁRNY|
|innodb_index_stats|PRIMÁRNY|
|innodb_index_stats|PRIMÁRNY|
+ -------------------- + ------------ +
Záver
V tomto návode sme diskutovali o tom, ako použiť dotaz MySQL SHOW INDEXES na získanie informácií o indexoch v tabuľke. Tiež sme sa pozreli na použitie informačnej schémy na získanie informácií o indexoch z jednej alebo všetkých schém na serveri MySQL.