13.7.5.22 Заявление SHOW INDEX
SHOW {INDEX | INDEXES | KEYS}
{FROM | IN} tbl_name
[{FROM | IN} db_name]
[WHERE expr]
SHOW INDEX возвращает информацию об индексах таблицы. Формат напоминает вызов SQLStatistics в ODBC. Для любого столбца в таблице требуется определённый уровень привилегий.
mysql> SHOW INDEX FROM City\G
*************************** 1. row ***************************
Table: city
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: ID
Collation: A
Cardinality: 4188
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
*************************** 2. row ***************************
Table: city
Non_unique: 1
Key_name: CountryCode
Seq_in_index: 1
Column_name: CountryCode
Collation: A
Cardinality: 232
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
Index_comment:
Альтернативой синтаксису является tbl_name
FROM db_namedb_name.tbl_name. Эти два заявления эквивалентны:
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
Клауза WHERE может быть использована для выбора строк с более общими условиями, как обсуждается в разделе 24.8, «Расширения для заявлений SHOW».
SHOW INDEX возвращает следующие поля:
-
TableИмя таблицы.
-
Non_unique0, если индекс не может содержать дубликатов, 1 — если может.
-
Key_nameИмя индекса. Если индекс является первичным ключом, имя всегда
PRIMARY. -
Seq_in_indexНомер последовательности столбца в индексе, начиная с 1.
-
Column_nameИмя столбца.
-
CollationСпособ сортировки столбца в индексе. Может принимать значения
A(возрастание) илиNULL(не отсортировано). -
CardinalityОценка количества уникальных значений в индексе. Для обновления этого числа выполните
ANALYZE TABLEили (дляMyISAMтаблиц) myisamchk -a.Cardinalityподсчитывается на основе статистики, хранящейся в виде целых чисел, поэтому значение не обязательно точное, даже для небольших таблиц. Чем выше кардинальность, тем больше вероятность того, что MySQL будет использовать индекс при выполнении соединений. -
Sub_partПрефикс индекса. То есть количество индексируемых символов, если столбец частично индексирован,
NULLесли весь столбец индексирован.ПримечаниеПрефиксные ограничения измеряются в байтах. Однако префиксные длины для спецификаций индексов в заявлениях
CREATE TABLE,ALTER TABLEиCREATE INDEXинтерпретируются как количество символов для типов строк без учёта типа бинарных строк (CHAR,VARCHAR,TEXT) и количество байтов для бинарных типов строк (BINARY,VARBINARY,BLOB). Учтите это при указании длины префикса для столбца строки без учёта типа бинарных строк, использующего многобайтовый набор символов.Дополнительную информацию о префиксах индексов см. в разделе 8.3.4, «Столбцовые индексы», и разделе 13.1.14, «Заявление CREATE INDEX».
-
PackedУказывает, как упакован ключ.
NULLесли нет. -
NullСодержит
YES, если столбец может содержатьNULLзначения, и'', если нет. -
Index_typeИспользованный метод индексирования (
BTREE,FULLTEXT,HASH,RTREE). -
CommentИнформация об индексе, не описанная в своём столбце, например,
disabledесли индекс отключён. -
Index_commentЛюбой комментарий, предоставленный для индекса с атрибутом
COMMENT, когда индекс был создан.
Информация об индексах таблиц также доступна из INFORMATION_SCHEMA STATISTICS таблицы. Смотрите раздел 24.3.24, «Таблица INFORMATION_SCHEMA STATISTICS».
Вы можете перечислить индексы таблицы с помощью команды mysqlshow -k db_name tbl_name.
© 2025 Oracle
Licensed under the GPLv2 License.