Индексите са много полезни. Без тях MySQL трябва да сканира цялата таблица, за да намери съответните редове и колони, което може да бъде много неефективно в големи бази данни.
Този урок ще се фокусира върху това как да преглеждате индексната информация, като използвате клаузата SHOW INDEXES в MySQL.
Показване на индекси на таблици
За да покажем индексната информация на таблица, използваме клаузата SHOW INDEXES, последвана от името на таблицата, която искаме да получим индексната информация.
Общият синтаксис е показан като:
ПОКАЖЕТЕ ИНДЕКСИ tbl_name;
Например, помислете за една от таблиците в примерната база данни на Sakila. Можем да получим индексната информация, както е показано в заявката по -долу:
ИЗПОЛЗВАЙТЕ сакила;ПОКАЖЕТЕ ИНДЕКСИ ОТ филм;
Горната заявка ще показва информация за индекса от филмовата таблица в базата данни Sakila. Изходът е:
Разбиране на индексната информация
Командата SHOW INDEXES показва съответната информация за индексите в посочената таблица.
Ето следните условия и съответната им информация:
- Таблица: Това е първата колона от изхода. Той показва името на таблицата, където се намира индексът.
- Неуникални: Втората колона показва дали индексът може да съдържа дубликат. Стойността е булева, като 1 показва, че индексът може да съдържа дубликати и 0, ако е друго.
- Име на ключ: Третата колона показва името на индекса. По конвенция първичният ключ приема името на индекса на PRIMARY.
- Seq_in_index: Четвъртата колона показва последователния номер на колоната в индекса, започвайки от стойността 1.
- Име на колона: Петата колона е просто името на колоната.
- Сравнение: Шестата колона е раздел, който показва как колоната се сортира в индекса. Има три сортиращи стойности, като А е възходящ ред, В показва низходящ ред и NULL като несортиран.
- Кардиналност: Седмата колона показва уникалността на стойността на данните. В индексите той показва прогнозния брой уникални стойности в конкретния индекс.
- Под_част: Осмата колона показва префикса на индекса с NULL, което показва, че цялата колона е индексирана.
- Опакован: Деветата колона показва как са опаковани индексните ключове, като NULL показва, че ключовете не са опаковани.
- Нула: Десетата колона определя дали колоната може да съдържа NULL стойности. Да, ако колоната може да съдържа нулеви стойности и празна, ако не.
- Index_type: Единадесетата колона показва метода на индексиране като BTREE, HASH, RTREE и FULLTEXT.
- Коментар: Дванадесетата колона показва информацията за индекс, който не е описан в колоната му.
- Index_comment: Тринадесетата колона показва допълнителна информация за индекса, посочен с помощта на атрибута COMMENT, когато е създаден.
- Видимо: Четиринадесетата колона е индексът, видим за оптимизатора на заявки, със стойности Да и Не.
- Израз: Петнадесетата колона се показва, ако индексът използва израз, а не стойност на префикс на колона или колона.
СЪВЕТ: Информацията за индексите от заявката SHOW INDEXES е подобна на тази на SQLStatistics.
Показване на индексите на схемите
Можете също да получите индексна информация за схема. Общият синтаксис за постигане на този резултат е както следва:
SELECT table_name, index_name FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = schema_name;Помислете за заявката по -долу, която показва информация за схемата Sakila:
SELECT table_name, index_name ОТ information_schema.statistics WHERE table_schema ='sakila';Това ще покаже информация за индексите в схемата Sakila, както е показано в изхода по -долу:
+ --------------- + ----------------------------- +|ТАБЛИЦА_NAME|INDEX_NAME|
+ --------------- + ----------------------------- +
|актьор|ОСНОВНИ|
|актьор|idx_actor_last_name|
|адрес|ОСНОВНИ|
|адрес|idx_fk_city_id|
|адрес|idx_location|
|категория|ОСНОВНИ|
|град|ОСНОВНИ|
|град|idx_fk_country_id|
|страна|ОСНОВНИ|
|клиент|ОСНОВНИ|
|клиент|idx_fk_store_id|
|клиент|idx_fk_address_id|
|клиент|idx_last_name|
|филм|ОСНОВНИ|
|филм|idx_title|
|филм|idx_fk_language_id|
|филм|idx_fk_original_language_id|
|film_actor|ОСНОВНИ|
|film_actor|ОСНОВНИ|
|film_actor|idx_fk_film_id|
|филмова_категория|ОСНОВНИ|
|филмова_категория|ОСНОВНИ|
|филмова_категория|fk_film_category_category|
|film_text|ОСНОВНИ|
|film_text|idx_title_description|
|film_text|idx_title_description|
|складова наличност|ОСНОВНИ|
|складова наличност|idx_fk_film_id|
|складова наличност|idx_store_id_film_id|
|складова наличност|idx_store_id_film_id|
|----------------------------- ИЗХОДИТЕ ТРАНСКИРАНИ ------------------- -------
Можете също така да получите информация от всички схеми в сървъра, като използвате заявката, показана по -долу:
SELECT име на таблица, име на индекс ОТ информация_схема.статистика;ЗАБЕЛЕЖКА : Горната заявка изхвърля много информация. Рядко ще трябва да получавате индекси от всички схеми. Примерен изход обаче е по -долу:
+ -------------------- + ------------ +|ТАБЛИЦА_NAME|INDEX_NAME|
+ -------------------- + ------------ +
|innodb_table_stats|ОСНОВНИ|
|innodb_table_stats|ОСНОВНИ|
|innodb_index_stats|ОСНОВНИ|
|innodb_index_stats|ОСНОВНИ|
|innodb_index_stats|ОСНОВНИ|
+ -------------------- + ------------ +
Заключение
В този урок обсъдихме как да използваме заявката MySQL SHOW INDEXES за получаване на информация за индексите в таблица. Също така разгледахме използването на information_schema, за да получим информация за индексите от една или всички схеми в MySQL сървър.