Индексы применимы для поддержки уникальности (с ограничениями primary key и unique), а также для ускорения доступа к данным, если для выборки строки используется значение ключа. Ниже рассмотрен ряд соображений, касающихся производительности системы в связи с использованием индексов.
Индексы, которые должны существовать в любой таблице
В любой таблице необходимо иметь по меньшей мере один уникальный индекс, реализованный посредством ограничений PRIMARY KEY или UNIQUE. Одним из основных правил, относящихся к любой реляционной базе данных, является то, что должна быть однозначно идентифицируема каждая строка и что в таблице не могут существовать повторяющиеся строки. Этот индекс может не использоваться для ускорения доступа к данным — фактически, для малых таблиц это не так уж важно, но он должен всегда существовать и должен быть разрешен с целью предотвращения появления в таблице повторяющихся строк.
Когда нужно уничтожать индексы
Иногда при больших пакетных загрузках данных имеет смысл удалить часть индексов, чтобы не приходилось поддерживать в таблице индексы каждый раз при добавлении новой строки. Может оказаться, что удаление индексов, выполнение программы загрузки, а затем воссоздание индексов или разрешение ограничений может быть выполнено быстрее, чем поддержание индексов при вводе каждой новой строки. Однако в зависимости от того, как была написана программа загрузки, удаление всех индексов может отрицательно сказаться на ее работе. Некоторые запросы в программе загрузки могут выполняться очень медленно при отсутствии индексов, предназначенных для быстрого поиска строк. Следует продумать, какие индексы могут использоваться операторами в программе загрузки, а какие могут быть отменены.