Как показать все индексы в MySQL или схеме

Как показать все индексы в MySQL или схеме База данных

Индекс базы данных MySQL относится к типу структуры данных, используемой в качестве организации данных в базе данных и помогающей повысить скорость различных операций, выполняемых в MySQL.

Индексы очень полезны. Без них MySQL должен сканировать всю таблицу, чтобы найти соответствующие строки и столбцы, что может быть очень неэффективным в больших базах данных.

В этом руководстве основное внимание будет уделено тому, как просматривать информацию индекса с помощью предложения SHOW INDEXES в MySQL.

Показать индексы таблиц

Чтобы показать информацию об индексе в таблице, мы используем предложение SHOW INDEXES, за которым следует имя таблицы, для которой мы хотим получить информацию об индексе.

Общий синтаксис показан как:

SHOW INDEXES tbl_name;

Например, рассмотрим одну из таблиц в образце базы данных Sakila. Мы можем получить информацию об индексе, как показано в запросе ниже:

USE sakila;

SHOW INDEXES FROM film;

Вышеупомянутый запрос отобразит индексную информацию из таблицы фильмов в базе данных Sakila. Результат:

Вышеупомянутый запрос отобразит индексную информацию из таблицы фильмов в базе данных Sakila

Понимание информации об индексе

Команда SHOW INDEXES отображает соответствующую информацию об индексах в указанной таблице.

Здесь представлены следующие условия и соответствующая информация:

  1. Таблица: это первый столбец вывода. Он показывает имя таблицы, в которой находится индекс.
  2. Неуникальный: второй столбец показывает, может ли индекс содержать дубликат. Это логическое значение, где 1 указывает, что индекс может содержать дубликаты, и 0 в противном случае.
  3. Key_name: втретьем столбце отображается имя индекса. По соглашению первичный ключ принимает имя индекса PRIMARY.
  4. Seq_in_index: вчетвертом столбце отображается порядковый номер столбца в индексе, начиная со значения 1.
  5. Column_name:пятый столбец — это просто имя столбца.
  6. Сопоставление: шестой столбец — это раздел, в котором показано, как столбец сортируется в индексе. Имеется три значения сортировки: A — порядок по возрастанию, B — по убыванию, а NULL — как несортированный.
  7. Количество элементов :седьмой столбец показывает уникальность значения данных. В индексах он показывает предполагаемое количество уникальных значений в конкретном индексе.
  8. Под_часть: восьмой столбец отображает префикс индекса с NULL, что указывает на то, что индексируется весь столбец.
  9. Упаковано: девятый столбец показывает, как упакованы ключи индекса, при этом NULL указывает, что ключи не упакованы.
  10. Null: десятый столбец указывает, может ли столбец содержать значения NULL. Да, если столбец может содержать нулевые значения, и пустой, если нет.
  11. Index_type: одиннадцатый столбец показывает метод индекса, такой как BTREE, HASH, RTREE и FULLTEXT.
  12. Комментарий: двенадцатый столбец показывает информацию об индексе, не описанном в его столбце.
  13. Index_comment: тринадцатый столбец показывает дополнительную информацию об индексе, заданном с помощью атрибута COMMENT при создании.
  14. Видимый: четырнадцатый столбец — это индекс, видимый оптимизатору запросов, со значениями Да и Нет.
  15. Выражение: пятнадцатый столбец отображается, если в индексе используется выражение, а не значение столбца или префикса столбца.

СОВЕТ: информация об индексах из запроса SHOW INDEXES аналогична информации из SQLStatistics.

Показать индексы схемы

Вы также можете получить индексную информацию о схеме. Общий синтаксис для достижения этого результата следующий:

SELECT table_name, index_name FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = “schema_name”;

Рассмотрим запрос ниже, который показывает информацию о схеме Sakila:

SELECT table_name, index_name FROM information_schema.statistics WHERE table_schema = «sakila»;

Это отобразит информацию об индексах в схеме Sakila, как показано в выходных данных ниже:

+—————+——————————+

| TABLE_NAME | INDEX_NAME |

+—————+——————————+

| actor | PRIMARY |

| actor | idx_actor_last_name |

| address | PRIMARY |

| address | idx_fk_city_id |

| address | idx_location |

| category | PRIMARY |

| city | PRIMARY |

| city | idx_fk_country_id |

| country | PRIMARY |

| customer | PRIMARY |

| customer | idx_fk_store_id |

| customer | idx_fk_address_id |

| customer | idx_last_name |

| film | PRIMARY |

| film | idx_title |

| film | idx_fk_language_id |

| film | idx_fk_original_language_id |

| film_actor | PRIMARY |

| film_actor | PRIMARY |

| film_actor | idx_fk_film_id |

| film_category | PRIMARY |

| film_category | PRIMARY |

| film_category | fk_film_category_category |

| film_text | PRIMARY |

| film_text | idx_title_description |

| film_text | idx_title_description |

| inventory | PRIMARY |

| inventory | idx_fk_film_id |

| inventory | idx_store_id_film_id |

| inventory | idx_store_id_film_id |

|——————————OUTPUT TRUNCATED—————————

Вы также можете получить информацию из всех схем на сервере, используя запрос, показанный ниже:

SELECT table_name, index_name FROM information_schema.statistics;

ПРИМЕЧАНИЕ. Приведенный выше запрос выводит много информации. В редких случаях вам понадобится получать индексы по всем схемам. Однако ниже приведен пример вывода:

+———————+————+

| TABLE_NAME | INDEX_NAME |

+———————+————+

| innodb_table_stats | PRIMARY |

| innodb_table_stats | PRIMARY |

| innodb_index_stats | PRIMARY |

| innodb_index_stats | PRIMARY |

| innodb_index_stats | PRIMARY |

+———————+————+

Заключение

В этом руководстве мы обсудили, как использовать запрос MySQL SHOW INDEXES для получения информации об индексах в таблице. Мы также рассмотрели использование information_schema для получения информации об индексах из одной или всех схем на сервере MySQL.

Читайте также:  SQL Between: полное руководство
Оцените статью
bestprogrammer.ru
Добавить комментарий