Indexurile sunt foarte utile. Fără ele, MySQL trebuie să scaneze întregul tabel pentru a găsi rândurile și coloanele relevante, care pot fi foarte ineficiente în bazele de date mari.
Acest tutorial se va concentra asupra modului de vizualizare a informațiilor index folosind clauza SHOW INDEXES din MySQL.
Afișați indicii de tabel
Pentru a afișa informații despre index pe un tabel, folosim clauza SHOW INDEXES urmată de numele tabelului pe care dorim să obținem informațiile despre index.
Sintaxa generală este prezentată ca:
AFIȘAȚI INDICE tbl_name;
De exemplu, luați în considerare unul dintre tabelele din baza de date eșantion Sakila. Putem obține informații despre index așa cum se arată în interogarea de mai jos:
UTILIZAȚI sakila;AFIȘAȚI INDICELE din film;
Interogarea de mai sus va afișa informații de index din tabelul filmului în baza de date Sakila. Ieșirea este:
Înțelegerea informațiilor despre index
Comanda SHOW INDEXES afișează informațiile relevante despre indexuri în tabelul specificat.
Iată următorii termeni și informațiile respective furnizate:
- Masa: Aceasta este prima coloană din ieșire. Acesta arată numele tabelului în care se află indexul.
- Non-unic: A doua coloană arată dacă indexul poate conține un duplicat. Valoarea este booleană, 1 indicând indexul care poate conține duplicate și 0 dacă altfel.
- Key_name: A treia coloană arată numele indexului. Prin convenție, cheia primară ia numele indexului PRIMARY.
- Seq_in_index: Cea de-a patra coloană afișează numărul secvenței de coloane din index începând de la valoarea 1.
- Numele_coloanei: A cincea coloană este pur și simplu numele coloanei.
- Colaţionare: A șasea coloană este o secțiune care arată modul în care coloana este sortată în index. Există trei valori de sortare, A fiind ordinea crescătoare, B indicând ordinea descendentă și NULL ca neordonat.
- Cardinalitate: Cea de-a șaptea coloană arată unicitatea valorii datelor. În indici, arată numărul estimat de valori unice în indexul specific.
- Sub_partea: Cea de-a opta coloană afișează prefixul indexului cu NULL, indicând că întreaga coloană este indexată.
- Bătătorit: Cea de-a noua coloană arată cum sunt împachetate cheile index, iar NULL indică faptul că cheile nu sunt împachetate.
- Nul: Cea de-a zecea coloană specifică dacă coloana poate conține valori NULL. Da, dacă coloana poate conține valori nule și gol dacă nu.
- Tip_index: Cea de-a unsprezecea coloană arată metoda indexului, cum ar fi BTREE, HASH, RTREE și FULLTEXT.
- Cometariu: Cea de-a douăsprezecea coloană arată informațiile despre un index care nu este descris în coloana sa.
- Comentariu_indice: Cea de-a treisprezecea coloană prezintă informații suplimentare despre indexul specificat folosind atributul COMMENT când a fost creat.
- Vizibil: Cea de-a paisprezecea coloană este indexul vizibil pentru optimizatorul de interogare, cu valori Da și Nu.
- Expresie: Cea de-a cincisprezecea coloană se afișează dacă indexul folosește o expresie și nu o valoare de coloană sau de prefix de coloană.
ALUZIE: Informațiile despre indexuri din interogarea SHOW INDEXES sunt similare cu cele din SQLStatistics.
Afișați indexurile de schemă
De asemenea, puteți obține informații despre index despre o schemă. Sintaxa generală pentru obținerea acestui rezultat este următoarea:
SELECȚIONEAZĂ nume_tabel, nume_indice DIN INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = schema_name;Luați în considerare interogarea de mai jos care arată informații despre schema Sakila:
SELECT nume_tabel, nume_indice DIN information_schema.statistics WHERE table_schema =„sakila”;Aceasta va afișa informații despre indexurile din schema Sakila așa cum se arată în rezultatul de mai jos:
+ --------------- + ----------------------------- +|TABLE_NAME|INDEX_NAME|
+ --------------- + ----------------------------- +
|actor|PRIMAR|
|actor|idx_actor_last_name|
|abordare|PRIMAR|
|abordare|idx_fk_city_id|
|abordare|locație_idx|
|categorie|PRIMAR|
|oraș|PRIMAR|
|oraș|idx_fk_country_id|
|țară|PRIMAR|
|client|PRIMAR|
|client|idx_fk_store_id|
|client|idx_fk_address_id|
|client|idx_last_name|
|film|PRIMAR|
|film|idx_title|
|film|idx_fk_language_id|
|film|idx_fk_original_language_id|
|film_actor|PRIMAR|
|film_actor|PRIMAR|
|film_actor|idx_fk_film_id|
|film_categorie|PRIMAR|
|film_categorie|PRIMAR|
|film_categorie|fk_film_category_category|
|text_film|PRIMAR|
|text_film|idx_title_description|
|text_film|idx_title_description|
|inventar|PRIMAR|
|inventar|idx_fk_film_id|
|inventar|idx_store_id_film_id|
|inventar|idx_store_id_film_id|
|----------------------------- IEȘIRE TRUNCATĂ ------------------- -------
De asemenea, puteți obține informații din toate schemele de pe server utilizând interogarea prezentată mai jos:
SELECT nume_tabel, nume_indice FROM information_schema.statistics;NOTĂ : Interogarea de mai sus aruncă o mulțime de informații. Rareori va trebui să obțineți indexuri din toate schemele. Cu toate acestea, un exemplu de ieșire este mai jos:
+ -------------------- + ------------ +|TABLE_NAME|INDEX_NAME|
+ -------------------- + ------------ +
|innodb_table_stats|PRIMAR|
|innodb_table_stats|PRIMAR|
|innodb_index_stats|PRIMAR|
|innodb_index_stats|PRIMAR|
|innodb_index_stats|PRIMAR|
+ -------------------- + ------------ +
Concluzie
În acest tutorial, am discutat despre modul de utilizare a interogării MySQL SHOW INDEXES pentru a obține informații despre indexurile dintr-un tabel. De asemenea, ne-am uitat la utilizarea information_schema pentru a obține informații despre indexuri de la una sau toate schemele dintr-un server MySQL.