Индекс банка данных — это структура данных, которая увеличивает скорость транзакций таблиц. Имея один или даже несколько столбцов, можно генерировать индексы, закладывая основу для взаимно быстрого случайного поиска и эффективного упорядочивания входов записей. При построении индекса следует иметь в виду, что все столбцы отбрасываются для генерации SQL-запросов, а также для создания одного или даже нескольких индексов для этих столбцов. На практике индексы представляют собой форму таблиц, которые содержат поле столбца первичного ключа или индекса и ссылаются на отдельную таблицу для каждой записи. Пользователи могут не видеть индексы, они отброшены для ускорения запросов, так как поисковая система базы данных будет использовать их для очень быстрой трассировки записей.
Индексы с использованием MySQL WorkBench
Во-первых, запустите MySQL Workbench и подключите его к корневой базе данных.
Мы будем создавать новую таблицу «контакты» в базе данных «данные» с разными столбцами в ней. У нас есть один первичный ключ и один столбец UNIQUE key в этой таблице, например id и адрес электронной почты. Здесь вы должны пояснить, что вам не нужно создавать индексы для столбцов UNIQUE и PRIMARY. База данных автоматически создает индексы для столбцов обоих типов. Таким образом, мы создадим индекс phone для столбца phone и индекс name для столбцов first_name и last_name. Выполните запрос, используя мигающий значок на панели задач.
Из вывода видно, что таблица и индексы созданы.
Теперь перейдите к панели схемы. В списке «Таблицы» вы можете найти только что созданную таблицу.
Давайте попробуем команду SHOW INDEXES, чтобы проверить индексы для этой конкретной таблицы, как показано ниже в области запроса, используя значок flash.
Это окно появится сразу. Вы можете увидеть столбец «Key_name», который показывает, что ключ принадлежит каждому столбцу. Поскольку мы создали индекс «телефон» и «имя», он также появляется. Вы можете увидеть другую важную информацию об индексах, например, последовательность индекса для определенного столбца, тип индекса, видимость и т.д.
Индексы с использованием оболочки командной строки MySQL
Откройте клиентскую оболочку командной строки MySQL на своем компьютере. Введите пароль MySQL, чтобы начать использовать.
Пример 1
Предположим, что у нас есть таблица order1 в схеме order с некоторыми столбцами, имеющими значения, как показано на изображении. Используя команду SELECT, мы должны получить записи «order1».
> SELECT * FROM data.order1;
Поскольку мы еще не определили индексы для таблицы order1, угадать невозможно. Итак, мы попробуем использовать команду SHOW INDEXES или SHOW KEYS для проверки индексов следующим образом:
>> SHOW KEYS FROM order1 IN data;
Вы можете понять, что таблица order1 имеет только 1 столбец первичного ключа из приведенных ниже выходных данных. Это означает, что индексы еще не определены, поэтому для столбца «id» первичного ключа отображаются только записи с одной строкой.
Давайте проверим индексы для любого столбца в таблице order1, где видимость отключена, как показано ниже.
>> SHOW INDEXES FROM data.order1 WHERE VISIBLE = ‘NO’;
Теперь мы создадим несколько УНИКАЛЬНЫХ индексов для таблицы order1. Мы назвали этот УНИКАЛЬНЫЙ ИНДЕКС как ’rec’ и применили его к 4 столбцам: id, Region, Status и OrderNo. Для этого попробуйте следующую команду.
>> CREATE UNIQUE INDEX rec ON data.order1 (id, Region, Status, OrderNo);
Теперь посмотрим на результат создания индексов для конкретной таблицы. Результат приведен ниже после использования команды SHOW INDEXES. У нас есть список всех созданных индексов с одинаковыми именами «rec» для каждого столбца.
>> SHOW INDEXES FROM order1 IN data;
Пример 2
Предположим, что новая таблица «student» в базе данных «data» с полями с четырьмя столбцами имеет несколько записей. Получите данные из этой таблицы с помощью запроса SELECT следующим образом:
>> SELECT * FROM data.student;
Давайте сначала извлечем индексы столбцов первичного ключа, попробовав приведенную ниже команду SHOW INDEXES.
>> SHOW INDEXES FROM data.student WHERE Key_name = ‘PRIMARY’;
Вы можете видеть, что он выведет индексную запись для единственного столбца, имеющего тип PRIMARY из-за предложения WHERE, используемого в запросе.
Давайте создадим один уникальный и один неуникальный индекс для разных столбцов таблицы «student». Сначала мы создадим УНИКАЛЬНЫЙ индекс ’std’ в столбце ’Имя’ таблицы ’student’, используя команду CREATE INDEX в клиентской оболочке командной строки, как показано ниже.
>> CREATE UNIQUE INDEX std ON data.student ( Name );
Давайте создадим или добавим неуникальный индекс в столбец «Тема» таблицы «студент» при использовании команды ALTER. Да, мы использовали команду ALTER, потому что она используется для изменения таблицы. Итак, мы изменили таблицу, добавив индексы к столбцам. Итак, давайте попробуем выполнить приведенный ниже запрос ALTER TABLE в оболочке командной строки, добавив индекс stdSub в столбец Subject.
>> ALTER TABLE data.student ADD INDEX stdSub ( Subject );
Теперь настала очередь проверить недавно добавленные индексы в таблице «student» и ее столбцах «Name» и «Subject». Попробуйте выполнить команду ниже, чтобы проверить это.
>> SHOW INDEXES FROM data.student;
Из выходных данных вы можете видеть, что запросы присвоили неуникальный индекс столбцу «Тема» и уникальный индекс столбцу «Имя». Вы также можете увидеть названия индексов.
Давайте попробуем команду DROP INDEX, чтобы удалить индекс stdSub из таблицы student.
>> DROP INDEX stdSub ON data.student;
Давайте посмотрим на оставшиеся индексы, используя ту же инструкцию SHOW INDEX, как показано ниже. Теперь у нас остались только два индекса в таблице «student», как показано ниже.
>> SHOW INDEXES FROM data.student;
Заключение
Наконец, мы сделали все необходимые примеры о том, как создавать уникальные и неуникальные индексы, отображать или проверять индексы и отбрасывать индексы для конкретной таблицы.