Index är till stor hjälp. Utan dem måste MySQL skanna hela tabellen för att hitta relevanta rader och kolumner, vilket kan vara mycket ineffektivt i stora databaser.
Denna handledning kommer att fokusera på hur du visar indexinformation med hjälp av SHOW INDEXES -klausulen i MySQL.
Visa tabellindex
För att visa indexinformation på en tabell använder vi SHOW INDEXES -satsen följt av namnet på tabellen som vi vill få indexinformationen.
Den allmänna syntaxen visas som:
VISA INDEXER tbl_name;
Tänk till exempel på en av tabellerna i Sakilas exempeldatabas. Vi kan få indexinformationen som visas i frågan nedan:
ANVÄND sakila;VISA INDEXER FRÅN film;
Ovanstående fråga visar indexinformation från filmtabellen i Sakila -databasen. Utgången är:
Förstå indexinformation
Kommandot VISA INDEXER visar relevant information om indexen i den angivna tabellen.
Här följer följande villkor och deras respektive information:
- Tabell: Detta är den första kolumnen från utdata. Det visar namnet på tabellen där indexet finns.
- Ej unikt: Den andra kolumnen visar om indexet kan innehålla en kopia. Värdet är en booleskt, med 1 som anger att indexet kan innehålla dubbletter och 0 om annat.
- Nyckelnamn: Den tredje kolumnen visar indexets namn. Enligt konvention tar huvudnyckeln indexnamnet PRIMARY.
- Seq_in_index: Den fjärde kolumnen visar kolumnsekvensnumret i indexet från värdet 1.
- Kolumnnamn: Den femte kolumnen är helt enkelt kolumnnamnet.
- Sortering: Den sjätte kolumnen är ett avsnitt som visar hur kolumnen sorteras i indexet. Det finns tre sorteringsvärden, med A som den stigande ordningen, B indikerar den fallande ordningen och NULL som icke-sorterad.
- Kardinalitet: Den sjunde kolumnen visar datavärdets unika karaktär. I index visar det det uppskattade antalet unika värden i det specifika indexet.
- Del_del: Den åttonde kolumnen visar indexprefixet med NULL, vilket indikerar att hela kolumnen är indexerad.
- Packade: Den nionde kolumnen visar hur indexnycklarna är packade, med NULL som anger att nycklarna inte är packade.
- Null: Den tionde kolumnen anger om kolumnen kan innehålla NULL -värden. Ja, om kolumnen kan innehålla nullvärden och tom om inte.
- Indextyp: Den elfte kolumnen visar indexmetoden som BTREE, HASH, RTREE och FULLTEXT.
- Kommentar: Den tolfte kolumnen visar information om ett index som inte beskrivs i dess kolumn.
- Index_comment: Den trettonde kolumnen visar ytterligare information om index som anges med attributet COMMENT när det skapas.
- Synlig: Den fjortonde kolumnen är indexet synligt för frågeoptimeraren, med värdena Ja och Nej.
- Uttryck: Den femtonde kolumnen visas om indexet använder ett uttryck och inte ett kolumn- eller kolumnprefixvärde.
ANTYDAN: Informationen om indexen från SHOW INDEXES -frågan liknar den för SQLStatistics.
Visa schemaindex
Du kan också få indexinformation om ett schema. Den allmänna syntaxen för att uppnå detta resultat är enligt nedan:
VÄLJ tabellnamn, indexnamn FRÅN INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = schema_name;Tänk på frågan nedan som visar information om Sakila -schemat:
VÄLJ tabellnamn, indexnamn FRÅN information_schema.statistics WHERE table_schema ='sakila';Detta kommer att visa information om indexen i Sakila -schemat som visas i utdata nedan:
+ --------------- + ----------------------------- +|TABLE_NAME|INDEX_NAME|
+ --------------- + ----------------------------- +
|skådespelare|PRIMÄR|
|skådespelare|idx_actor_last_name|
|adress|PRIMÄR|
|adress|idx_fk_city_id|
|adress|idx_location|
|kategori|PRIMÄR|
|stad|PRIMÄR|
|stad|idx_fk_country_id|
|Land|PRIMÄR|
|kund|PRIMÄR|
|kund|idx_fk_store_id|
|kund|idx_fk_address_id|
|kund|idx_last_name|
|filma|PRIMÄR|
|filma|idx_title|
|filma|idx_fk_language_id|
|filma|idx_fk_original_language_id|
|filmaktör|PRIMÄR|
|filmaktör|PRIMÄR|
|filmaktör|idx_fk_film_id|
|filmkategori|PRIMÄR|
|filmkategori|PRIMÄR|
|filmkategori|fk_film_category_category|
|film_text|PRIMÄR|
|film_text|idx_title_description|
|film_text|idx_title_description|
|lager|PRIMÄR|
|lager|idx_fk_film_id|
|lager|idx_store_id_film_id|
|lager|idx_store_id_film_id|
|----------------------------- OUTPUT TRUNCATED ------------------- -------
Du kan också få information från alla scheman på servern med hjälp av frågan nedan:
VÄLJ tabellnamn, indexnamn FRÅN informationsschema.statistik;NOTERA : Ovanstående fråga dumpar mycket information. Sällan kommer du att behöva få index från alla scheman. Ett urval är dock nedan:
+ -------------------- + ------------ +|TABLE_NAME|INDEX_NAME|
+ -------------------- + ------------ +
|innodb_table_stats|PRIMÄR|
|innodb_table_stats|PRIMÄR|
|innodb_index_stats|PRIMÄR|
|innodb_index_stats|PRIMÄR|
|innodb_index_stats|PRIMÄR|
+ -------------------- + ------------ +
Slutsats
I den här självstudien diskuterade vi hur man använder MySQL SHOW INDEXES -frågan för att få information om indexen i en tabell. Vi tittade också på att använda information_schema för att få information om index från ett eller alla scheman i en MySQL -server.