Indekser er veldig nyttig. Uten dem må MySQL skanne hele tabellen for å finne de relevante radene og kolonnene, noe som kan være svært ineffektivt i store databaser.
Denne opplæringen vil fokusere på hvordan du viser indeksinformasjon ved å bruke SHOW INDEXES -setningen i MySQL.
Vis tabellindekser
For å vise indeksinformasjon på en tabell, bruker vi SHOW INDEXES -leddet etterfulgt av navnet på tabellen vi ønsker å få indeksinformasjonen.
Den generelle syntaksen vises som:
VIS INDEKSER tbl_name;
Vurder for eksempel en av tabellene i Sakila -eksempeldatabasen. Vi kan få indeksinformasjonen som vist i spørringen nedenfor:
BRUK sakila;VIS INDEKSER FRA film;
Søket ovenfor viser indeksinformasjon fra filmtabellen i Sakila -databasen. Utgangen er:
Forstå indeksinformasjon
Kommandoen VIS INDEKSER viser relevant informasjon om indeksene i tabellen som er angitt.
Her er følgende vilkår og deres respektive informasjon:
- Bord: Dette er den første kolonnen fra utgangen. Det viser navnet på tabellen der indeksen ligger.
- Ikke-unikt: Den andre kolonnen viser om indeksen kan inneholde et duplikat. Verdien er en boolsk, med 1 som indikerer at indeksen kan inneholde dubletter og 0 hvis annet.
- Nøkkelnavn: Den tredje kolonnen viser navnet på indeksen. Etter konvensjon tar primærnøkkelen indeksnavnet PRIMARY.
- Seq_in_index: Den fjerde kolonnen viser kolonnesekvensnummeret i indeksen fra verdien 1.
- Kolonnenavn: Den femte kolonnen er ganske enkelt kolonnenavnet.
- Samling: Den sjette kolonnen er en seksjon som viser hvordan kolonnen blir sortert i indeksen. Det er tre sorteringsverdier, med A som stigende rekkefølge, B angir synkende rekkefølge og NULL som usortert.
- Kardinalitet: Den syvende kolonnen viser unikheten til dataverdien. I indekser viser det estimerte antall unike verdier i den spesifikke indeksen.
- Del_del: Den åttende kolonnen viser indeksprefikset med NULL, som indikerer at hele kolonnen er indeksert.
- Pakket: Den niende kolonnen viser hvordan indeksnøklene er pakket, med NULL som angir at nøklene ikke er pakket.
- Null: Den tiende kolonnen angir om kolonnen kan inneholde NULL -verdier. Ja, hvis kolonnen kan inneholde nullverdier, og tom hvis ikke.
- Indeks_type: Den ellevte kolonnen viser indeksmetoden som BTREE, HASH, RTREE og FULLTEXT.
- Kommentar: Den tolvte kolonnen viser informasjonen om en indeks som ikke er beskrevet i kolonnen.
- Index_comment: Den trettende kolonnen viser tilleggsinformasjon om indeksen som er angitt ved hjelp av COMMENT -attributtet når den ble opprettet.
- Synlig: Den fjortende kolonnen er indeksen synlig for spørringsoptimereren, med verdiene Ja og Nei.
- Uttrykk: Den femtende kolonnen viser om indeksen bruker et uttrykk og ikke en kolonne- eller kolonneprefiksverdi.
HINT: Informasjonen om indeksene fra SHOW INDEXES -spørringen ligner på den for SQLStatistics.
Vis skjemaindekser
Du kan også få indeksinformasjon om et skjema. Den generelle syntaksen for å oppnå dette resultatet er som følger:
VELG tabellnavn, indeksnavn FRA INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = schema_name;Vurder spørringen nedenfor som viser informasjon om Sakila -skjemaet:
VELG tabellnavn, indeksnavn FRA informasjon_skjema.statistikk HVOR tabellskjema ='sakila';Dette vil vise informasjon om indeksene i Sakila -skjemaet som vist i utdataene nedenfor:
+ --------------- + ----------------------------- +|TABLE_NAME|INDEX_NAME|
+ --------------- + ----------------------------- +
|skuespiller|HOVED|
|skuespiller|idx_actor_last_name|
|adresse|HOVED|
|adresse|idx_fk_city_id|
|adresse|idx_location|
|kategori|HOVED|
|by|HOVED|
|by|idx_fk_country_id|
|land|HOVED|
|kunde|HOVED|
|kunde|idx_fk_store_id|
|kunde|idx_fk_address_id|
|kunde|idx_last_name|
|film|HOVED|
|film|idx_title|
|film|idx_fk_language_id|
|film|idx_fk_original_language_id|
|film_aktor|HOVED|
|film_aktor|HOVED|
|film_aktor|idx_fk_film_id|
|filmkategori|HOVED|
|filmkategori|HOVED|
|filmkategori|fk_film_category_category|
|film_tekst|HOVED|
|film_tekst|idx_title_description|
|film_tekst|idx_title_description|
|inventar|HOVED|
|inventar|idx_fk_film_id|
|inventar|idx_store_id_film_id|
|inventar|idx_store_id_film_id|
|----------------------------- UTGANG TRUNKERT ------------------- -------
Du kan også få informasjon fra alle skjemaene på serveren ved hjelp av spørringen vist nedenfor:
VELG tabellnavn, indeksnavn FRA informasjon_skjema.statistikk;MERK : Søket ovenfor gir mye informasjon. Sjelden trenger du å få indekser fra alle skjemaene. Imidlertid er en prøveutgang nedenfor:
+ -------------------- + ------------ +|TABLE_NAME|INDEX_NAME|
+ -------------------- + ------------ +
|innodb_table_stats|HOVED|
|innodb_table_stats|HOVED|
|innodb_index_stats|HOVED|
|innodb_index_stats|HOVED|
|innodb_index_stats|HOVED|
+ -------------------- + ------------ +
Konklusjon
I denne opplæringen diskuterte vi hvordan du bruker MySQL SHOW INDEXES -spørringen for å få informasjon om indeksene i en tabell. Vi så også på bruk av informasjonsskjemaet for å få informasjon om indeksene fra ett eller alle skjemaer i en MySQL -server.