Руководство по SQL. Индексы.

Индексы – это специальные таблицы, которые могут быть использованы поисковым двигателем базы данных (далее – БД), для ускорения получения данных. Необходимо просто добавить указатель индекса в таблицу. Индекс в БД крайне схож с индексом в конце книги.

Допустим, мы хотим иметь ссылку на все страницы книги, которые касаются определённой темы (например, Наследование в книге по программированию на языке Java). Для этого, мы в первую очередь ссылаемся на индекс, который указан в конце книге и переходим на любую из страниц, которая относится к необходимой теме.

Индекс помогает ускорить запросы на получение данных (SELECT [WHERE]), но замедляет процесс добавления и изменения записей (INSERT, UPDATE). Индексы могут быть добавлены или удалены без влияния на сами данные.

Для того, чтобы добавить индекс, нам необходимо использовать команду CREATE INDEX, что позволит нам указать имя индекса и определить таблицу и колонку или индекс колонки и определить используется ли индекс по возрастанию или по убыванию.

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

Команда добавления индекса имеет следующий вид:


CREATE INDEX имя_индекса ON имя_таблицы;

Индекс может относиться, как к одной колонке:


CREATE INDEX имя_индекса
ON имя_таблицы (имя_колонки);

Так и к нескольким:


CREATE INDEX имя_индекса
ON имя_таблицы (колонка1, колонка2);

Выбор типа индекса (одноколоночный или многоколоночный) зависит от того, что именно мы чаще всего будем использовать в нашем условном операторе WHERE.

Для того, чтобы удалить индекс, мы должны использовать следующую команду:


DROP INDEX имя_индекса;

Дополнительно вы можете ознакомиться с индексом, прочитав статью, посвящённую констрейнту INDEX.

Индексы используются для увеличения производительности БД, но есть случаи, когда нам стоит избегать их использования:

  • Не стоит использовать индексы для небольших таблиц.
  • Не стоит использовать индексы для таблиц, в которых, как предполагается, будут часто добавляться новые данные, либо эти данные будут изменяться.
  • Не стоит использовать индекс для колонок, с которыми будут производиться частые манипуляции.
  • Не стоит использовать индексы для колонок, которые имеют много значений NULL.

На этом мы заканчиваем изучение индексов.

В следующей статье мы рассмотрим способ изменения структуры таблицы.