Учебное пособие по индексу MySQL – создание, добавление и удаление

Что такое индекс?

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

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

Для чего нужен индекс?

Никто не любит медленные системы. Высокая производительность системы имеет первостепенное значение практически во всех системах баз данных. Большинство предприятий вкладывают значительные средства в оборудование, чтобы ускорить получение данных и обработку данных. Но есть предел инвестициям в оборудование, которые может сделать бизнес. Оптимизация базы данных — более дешевое и лучшее решение.

Индекс MySQL

Медленное время ответа обычно связано с тем, что записи хранятся в таблицах базы данных случайным образом. Поисковые запросы должны проходить по всем случайно сохраненным записям одну за другой, чтобы найти нужные данные. Это приводит к снижению производительности баз данных при извлечении данных из больших таблиц. Следовательно, используются индексы, которые сортируют данные, чтобы облегчить поиск.

Синтаксис: Создать индекс

Индексы можно определить двумя способами.

  1. На момент создания таблицы
  2. После создания таблицы

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

Для нашей базы данных myflixdb мы ожидаем много запросов в базе данных по полному имени.

Мы добавим столбец «full_names» в индекс в новой таблице «members_indexed».

Сценарий, показанный ниже, помогает нам добиться этого.

CREATE TABLE `members_indexed` (
  `membership_number` int(11) NOT NULL AUTO_INCREMENT,
  `full_names` varchar(150) DEFAULT NULL,
  `gender` varchar(6) DEFAULT NULL,
  `date_of_birth` date DEFAULT NULL,
  `physical_address` varchar(255) DEFAULT NULL,
  `postal_address` varchar(255) DEFAULT NULL,
  `contact_number` varchar(75) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`membership_number`),INDEX(full_names)
) ENGINE=InnoDB;

Выполните приведенный выше сценарий SQL в рабочей среде MySQL для «myflixdb».

MySQL создать индекс

При обновлении myflixdb отображается вновь созданная таблица с именемmember_indexed.

"Примечание" Таблицаmembers_indexed имеет «полные_имена» в узле индексов.

По мере расширения базы участников и увеличения количества записей поисковые запросы к таблицеmembers_indexed, в которых используются предложения WHERE и ORDER BY, будут выполняться намного быстрее по сравнению с теми, которые выполняются в таблице участников без определенного индекса.

Добавить базовый синтаксис индекса

В приведенном выше примере индекс создается при определении таблицы базы данных. Предположим, у нас уже определена таблица и поисковые запросы по ней выполняются очень медленно. Им требуется слишком много времени, чтобы вернуть результаты. Изучив проблему, мы обнаружили, что можем значительно улучшить производительность системы, создав INDEX для наиболее часто используемого столбца в предложении WHERE.

Мы можем использовать следующееwing запрос на добавление индекса

CREATE INDEX id_index ON table_name(column_name);

Предположим, что поисковые запросы в таблице фильмов выполняются очень медленно, и мы хотим использовать индекс «названия фильма», чтобы ускорить запросы. Мы можем использовать следующийwing сценарий для достижения этой цели.

CREATE INDEX `title_index` ON `movies`(`title`);

Выполнение приведенного выше запроса создает индекс для поля заголовка в таблице фильмов.

Это означает, что все поисковые запросы в таблице фильмов, использующие «название», будут выполняться быстрее.

Однако поисковые запросы по другим полям таблицы фильмов будут выполняться медленнее, чем запросы, основанные на индексированном поле.

Примечание: При необходимости вы можете создавать индексы для нескольких столбцов в зависимости от полей, которые вы собираетесь использовать в своей поисковой системе базы данных.

Если вы хотите просмотреть индексы, определенные для конкретной таблицы, вы можете использовать следующую команду:wing сценарий для этого.

SHOW INDEXES FROM table_name;

Давайте теперь посмотрим на все индексы, определенные в таблице фильмов в myflixdb.

SHOW INDEXES FROM `movies`;

Выполнение приведенного выше сценария в Рабочая среда MySQL против myflixdb дает нам результаты по созданному индексу.

Примечание: Первичный и внешний ключи таблицы уже проиндексированы MySQL. Каждый индекс имеет свое уникальное имя, а также отображается столбец, в котором он определен.

Синтаксис: Индекс удаления

Команда drop используется для удаления уже определенных индексов в таблице.

Могут быть случаи, когда вы уже определили индекс для часто обновляемой таблицы. Возможно, вы захотите удалить индексы в такой таблице, чтобы повысить производительность запросов UPDATE и INSERT. Основной синтаксис, используемый для удаления индекса таблицы, следующий.

DROP INDEX `index_id` ON `table_name`;

Давайте теперь посмотрим на практический пример.

DROP INDEX ` full_names` ON `members_indexed`;

Выполнение приведенной выше команды удаляет индекс с идентификатором `full_names` из таблицыmember_indexed.

Итоги

  • Индексы очень эффективны, когда речь идет о значительном повышении производительности поисковых запросов MySQL.
  • Индексы можно определить при создании таблицы или добавить позже, после того, как таблица уже создана.
  • Вы можете определить индексы для более чем одного столбца таблицы.
  • SHOW INDEX FROM table_name используется для отображения определенных индексов в таблице.
  • Команда DROP используется для удаления определенного индекса в данной таблице.