Индексы применяются для быстрого поиска строк с указанным значением одного столбца. Без индекса чтение таблицы осуществляется по всей таблице начиная с первой записи, пока не будут найдены соответствующие строки. Чем больше таблица, тем больше накладные расходы. Если же таблица содержит индекс по рассматриваемым столбцам, то MySQL может быстро определить позицию для поиска в середине файла данных без просмотра всех данных. Для таблицы, содержащей 1000 строк, это будет как минимум в 100 раз быстрее по сравнению с последовательным перебором всех записей. Однако в случае, когда необходим доступ почти ко всем 1000 строкам, быстрее будет последовательное чтение, так как при этом не требуется операций поиска по диску.
CREATE INDEX nameindex ON city <id>;
Существуют разные типы индексов таблицы (FULLTEXT, UNIQUE), которые так же можно задавать при создании индекса.
CREATE UNIQUE INDEX unindexname ON city <id>;
Для полнотекстового индекса важно так же задавать количество символов для индекса.
CREATE FULLTEXT INDEX ftext ON city(description(100));
Таким образом в полнотекстовый индекс будут попадать первые 100 символов поля description.
Удаление индекса из таблицы
В целях оптимизации базы данных иногда может потребоваться удаление индексов.
DROP INDEX nameindex ON city;
Просмотр индексов в таблице
Просмотреть какие есть индексы у конкретной таблицы можно с помощью следующей команды.
SHOW INDEX FROM city;