Indeksi su od velike pomoći. Bez njih, MySQL mora skenirati cijelu tablicu kako bi pronašao odgovarajuće retke i stupce, što može biti vrlo neučinkovito u velikim bazama podataka.
Ovaj vodič će se usredotočiti na to kako pregledati podatke o indeksu pomoću klauzule SHOW INDEXES u MySQL -u.
Pokaži indekse tablice
Za prikaz indeksnih podataka u tablici, koristimo klauzulu SHOW INDEXES iza koje slijedi naziv tablice u koju želimo dobiti informacije o indeksu.
Opća sintaksa prikazana je ovako:
PRIKAŽI INDEKSE tbl_name;
Na primjer, razmotrite jednu od tablica u uzorkovnoj bazi podataka Sakila. Informacije o indeksu možemo dobiti kako je prikazano u donjem upitu:
KORISTITE sakila;PRIKAŽI INDEKSE IZ filma;
Gornji upit prikazat će podatke o indeksu iz tablice filma u bazi podataka Sakila. Izlaz je:
Razumijevanje informacija o indeksu
Naredba SHOW INDEXES prikazuje relevantne informacije o indeksima u navedenoj tablici.
Ovdje su navedeni sljedeći uvjeti i odgovarajući podaci:
- Stol: Ovo je prvi stupac iz ispisa. Prikazuje naziv tablice u kojoj se nalazi indeks.
- Nije jedinstveno: Drugi stupac prikazuje može li indeks sadržavati duplikat. Vrijednost je logička, s tim da 1 označava da indeks može sadržavati duplikate, a 0 ako nije drugačije.
- Ime_ključa: Treći stupac prikazuje naziv indeksa. Prema dogovoru, primarni ključ uzima naziv indeksa PRIMARY.
- Seq_in_index: Četvrti stupac prikazuje redni broj stupca u indeksu počevši od vrijednosti 1.
- Naziv_ stupca: Peti stupac jednostavno je naziv stupca.
- Usporedba: Šesti stupac je odjeljak koji prikazuje kako se stupac sortira u indeksu. Postoje tri vrijednosti razvrstavanja, pri čemu je A rastući redoslijed, B označava opadajući red, a NULL kao nerazvrstane.
- Kardinalnost: Sedmi stupac prikazuje jedinstvenost vrijednosti podataka. U indeksima prikazuje procijenjeni broj jedinstvenih vrijednosti u određenom indeksu.
- Pod_dio: Osmi stupac prikazuje prefiks indeksa s NULL, označavajući da je cijeli stupac indeksiran.
- Pakirano: Deveti stupac prikazuje način pakiranja indeksnih ključeva, pri čemu NULL označava da ključevi nisu pakirani.
- Null: Deseti stupac navodi može li stupac sadržavati NULL vrijednosti. Da, ako stupac može sadržavati null vrijednosti, a prazan ako ne.
- Index_type: Jedanaesti stupac prikazuje metodu indeksa kao što su BTREE, HASH, RTREE i FULLTEXT.
- Komentar: Dvanaesti stupac prikazuje podatke o indeksu koji nisu opisani u stupcu.
- Index_comment: Trinaesti stupac prikazuje dodatne informacije o indeksu specificiranom pomoću atributa COMMENT kada je kreiran.
- Vidljivo: Četrnaesti stupac je indeks vidljiv optimizatoru upita s vrijednostima Da i Ne.
- Izraz: Petnaesti stupac prikazuje ako indeks koristi izraz, a ne vrijednost prefiksa stupca ili stupca.
SAVJET: Podaci o indeksima iz upita SHOW INDEXES slični su onima SQLStatistics.
Prikaži indekse shema
Također možete dobiti indeksne podatke o shemi. Opća sintaksa za postizanje ovog rezultata je sljedeća:
SELECT table_name, index_name FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = schema_name;Razmotrite donji upit koji prikazuje informacije o shemi Sakila:
SELECT table_name, index_name FROM information_schema.statistics WHERE table_schema ='sakila';Ovo će prikazati informacije o indeksima u shemi Sakila kako je prikazano u donjem ispisu:
+ --------------- + ----------------------------- +|TABLA_NAME|INDEX_NAME|
+ --------------- + ----------------------------- +
|glumac|PRIMARNO|
|glumac|idx_actor_last_name|
|adresa|PRIMARNO|
|adresa|idx_fk_city_id|
|adresa|idx_location|
|kategorija|PRIMARNO|
|Grad|PRIMARNO|
|Grad|idx_fk_country_id|
|zemlja|PRIMARNO|
|kupac|PRIMARNO|
|kupac|idx_fk_store_id|
|kupac|idx_fk_adresa_id|
|kupac|idx_last_name|
|film|PRIMARNO|
|film|idx_title|
|film|idx_fk_language_id|
|film|idx_fk_original_language_id|
|filmski glumac|PRIMARNO|
|filmski glumac|PRIMARNO|
|filmski glumac|idx_fk_film_id|
|film_kategorija|PRIMARNO|
|film_kategorija|PRIMARNO|
|film_kategorija|fk_film_category_category|
|filmski_tekst|PRIMARNO|
|filmski_tekst|idx_title_description|
|filmski_tekst|idx_title_description|
|inventar|PRIMARNO|
|inventar|idx_fk_film_id|
|inventar|idx_store_id_film_id|
|inventar|idx_store_id_film_id|
|----------------------------- IZLAZ TRUNCIRAN ------------------- -------
Također možete dobiti informacije iz svih shema na poslužitelju pomoću dolje prikazanog upita:
SELECT table_name, index_name FROM information_schema.statistics;BILJEŠKA : Gornji upit izbacuje mnogo informacija. Rijetko ćete morati dobiti indekse iz svih shema. Međutim, primjer uzorka je ispod:
+ --------------------- + ------------ +|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čak
U ovom smo vodiču raspravljali o tome kako koristiti upit MySQL SHOW INDEXES za dobivanje informacija o indeksima u tablici. Također smo pogledali korištenje information_schema za dobivanje informacija o indeksima iz jedne ili svih shema na MySQL poslužitelju.