Indeksi so v veliko pomoč. Brez njih mora MySQL pregledati celotno tabelo in poiskati ustrezne vrstice in stolpce, kar je lahko zelo neučinkovito v velikih bazah podatkov.
Ta vadnica se bo osredotočila na to, kako si ogledate podatke o indeksu z uporabo klavzule SHOW INDEXES v MySQL.
Pokaži indekse tabel
Za prikaz podatkov o indeksu v tabeli uporabljamo klavzulo SHOW INDEXES, ki ji sledi ime tabele, za katero želimo dobiti informacije o indeksu.
Splošna skladnja je prikazana tako:
POKAŽI INDEKSE tbl_name;
Na primer, razmislite o eni od tabel v vzorčni zbirki podatkov Sakila. Podatke o indeksu lahko dobimo, kot je prikazano v spodnji poizvedbi:
UPORABI sakila;PRIKAZI KAZALCE IZ filma;
Zgornja poizvedba bo prikazala podatke o indeksu iz filmske tabele v bazi podatkov Sakila. Izhod je:
Razumevanje informacij o indeksu
Ukaz SHOW INDEXES prikaže ustrezne podatke o indeksih v podani tabeli.
Spodaj so navedeni naslednji pogoji in ustrezni podatki:
- Tabela: To je prvi stolpec iz izhoda. Prikazuje ime tabele, v kateri je indeks.
- Ni edinstven: Drugi stolpec prikazuje, ali lahko indeks vsebuje dvojnik. Vrednost je logična, pri čemer 1 označuje, da lahko indeks vsebuje dvojnike, 0 pa, če ni drugače.
- Key_name: Tretji stolpec prikazuje ime indeksa. Po dogovoru primarni ključ prevzame ime indeksa PRIMARY.
- Seq_in_index: Četrti stolpec prikazuje zaporedno številko stolpca v indeksu, ki se začne od vrednosti 1.
- Ime stolpca: Peti stolpec je preprosto ime stolpca.
- Primerjava: Šesti stolpec je razdelek, ki prikazuje, kako se stolpec razvrsti v indeksu. Obstajajo tri vrednosti razvrščanja, pri čemer je A naraščajoči vrstni red, B označuje padajoči vrstni red in NULL kot nerazvrščeno.
- Kardinalnost: Sedmi stolpec prikazuje edinstvenost vrednosti podatkov. V indeksih prikazuje ocenjeno število edinstvenih vrednosti v določenem indeksu.
- Poddelek: Osmi stolpec prikazuje predpono indeksa z NULL, kar pomeni, da je indeksiran celoten stolpec.
- Pakirano: Deveti stolpec prikazuje, kako so indeksni ključi zapakirani, pri čemer NULL označuje, da ključi niso zapakirani.
- Nič: Deseti stolpec določa, ali lahko stolpec vsebuje vrednosti NULL. Da, če lahko stolpec vsebuje ničelne vrednosti, in če ni, je prazen.
- Index_type: Enajsti stolpec prikazuje metodo indeksa, kot so BTREE, HASH, RTREE in FULLTEXT.
- Komentar: Dvanajsti stolpec prikazuje podatke o indeksu, ki v njegovem stolpcu niso opisani.
- Index_comment: Trinajsti stolpec prikazuje dodatne informacije o indeksu, podanem z uporabo atributa COMMENT, ko je ustvarjen.
- Vidno: Štirinajsti stolpec je indeks, viden optimizatorju poizvedb, z vrednostmi Da in Ne.
- Izraz: Petnajsti stolpec prikaže, če indeks uporablja izraz in ne vrednosti predpone stolpca ali stolpca.
NAMIG: Podatki o indeksih iz poizvedbe SHOW INDEXES so podobni podatkom SQLStatistics.
Pokaži indekse shem
Dobite lahko tudi indeksne informacije o shemi. Splošna sintaksa za dosego tega rezultata je naslednja:
SELECT ime_tabele, ime_indeksa IZ INFORMACIJE_SCHEMA.STATISTIKE KJE TABLA_SCHEMA = ime_sheme;Razmislite o spodnji poizvedbi, ki prikazuje informacije o shemi Sakila:
SELECT ime_tabele, ime_indeksa IZ informacije_sheme.statistike KJE tabela_shema ='sakila';To bo prikazalo informacije o indeksih v shemi Sakila, kot je prikazano v spodnjem izhodu:
+ --------------- + ----------------------------- +|TABLA_NAME|INDEX_NAME|
+ --------------- + ----------------------------- +
|igralec|PRIMARNO|
|igralec|idx_actor_last_name|
|naslov|PRIMARNO|
|naslov|idx_fk_city_id|
|naslov|idx_location|
|kategorijo|PRIMARNO|
|mesto|PRIMARNO|
|mesto|idx_fk_country_id|
|država|PRIMARNO|
|stranko|PRIMARNO|
|stranko|idx_fk_store_id|
|stranko|idx_fk_address_id|
|stranko|idx_last_name|
|film|PRIMARNO|
|film|idx_title|
|film|idx_fk_language_id|
|film|idx_fk_original_language_id|
|filmski igralec|PRIMARNO|
|filmski igralec|PRIMARNO|
|filmski igralec|idx_fk_film_id|
|film_kategorija|PRIMARNO|
|film_kategorija|PRIMARNO|
|film_kategorija|fk_film_category_category|
|film_text|PRIMARNO|
|film_text|idx_title_description|
|film_text|idx_title_description|
|inventar|PRIMARNO|
|inventar|idx_fk_film_id|
|inventar|idx_store_id_film_id|
|inventar|idx_store_id_film_id|
|----------------------------- IZHOD TRUNKIRAN ------------------- -------
Podatke iz vseh shem v strežniku lahko dobite tudi s spodnjo poizvedbo:
SELECT ime_tabele, ime_indeksa IZ informacije_sheme.statistike;OPOMBA : Zgornja poizvedba odlaga veliko informacij. Redko boste morali dobiti indekse iz vseh shem. Vendar je spodaj naveden vzorec:
+ -------------------- + ------------ +|TABLA_NAME|INDEX_NAME|
+ -------------------- + ------------ +
|innodb_table_stats|PRIMARNO|
|innodb_table_stats|PRIMARNO|
|innodb_index_stats|PRIMARNO|
|innodb_index_stats|PRIMARNO|
|innodb_index_stats|PRIMARNO|
+ -------------------- + ------------ +
Zaključek
V tej vadnici smo razpravljali o tem, kako uporabiti poizvedbo MySQL SHOW INDEXES za pridobivanje informacij o indeksih v tabeli. Preučili smo tudi uporabo information_schema za pridobivanje informacij o indeksih iz ene ali vseh shem v strežniku MySQL.