Таблицы в базе данных могут иметь большое количество строк, которые хранятся в произвольном порядке, и их поиск по заданному значению путем последовательного просмотра таблицы строка за строкой может занимать много времени. Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет находить нужную строку по заданному значению.
Для оптимальной производительности запросов индексы обычно создаются на тех столбцах таблицы, которые часто используются в запросах. Для одной таблицы может быть создано несколько индексов.
Когда столбец помечается как ключ, создается индекс. Индекс хранит список значений ключа и указатели на записи, содержащие эти значения. При создании индекса таблица уже должна содержать столбцы, по которым создается индекс.
В базе таксопарка в таблице cars первичным ключом является учетный номер машины. Запросы же к базе могут строиться на поиске по государственному регистрационному номеру. Для того чтобы повысить скорость выполнения таких запросов, следует создать индекс по столбцу reg_number, в котором записан регистрационный номер:
mysql>CREATE INDEX nomer ON cars (reg_number) ;
При создании индекса на сервере формируется упорядоченный список значений этого поля, который MySQL использует при выполнении запросов. Если для создания индекса используется несколько полей, то значения второго поля упорядочиваются внутри первого, третьего – внутри второго и т. д.
Имя индекса должно быть уникальным в базе данных. После создания индекса MySQL использует индекс для поиска данных автоматически, т. е. в запросах не требуется указывать индекс каким-либо образом.