index - это структура базы данных, которая может помочь ускорить доступ к отдельным строкам базы данных при поиске на основе полей в индексе.
В вашем примере оператор CREATE INDEX
создает индекс с именем tags_tag
для таблицы tags
, используя столбец tag
. Если вы хотите найти строки в таблице на основе поля tag
, база данных может использовать индекс для более эффективного поиска строки. Без индекса базе данных, возможно, придется прибегнуть к полной проверке таблицы, что может занять гораздо больше времени (в зависимости от многих факторов, таких как размер таблицы, распределение значений, точные критерии запроса). Различные базы данных также поддерживают разные типы индексов, которые можно использовать для поиска данных различными способами.
Существует также недостаток индексов: для каждого индекса скорость записи снижается для этой таблицы. Если вы вставляете строку, наличие индекса означает, что в дополнение к записи базы данных в саму строку ей также придется обновить индекс.
Решить, к каким столбцам добавить индекс, может быть непросто, и, как всегда, тесты производительности или реальные запросы к данным реального мира являются наиболее точным способом измерения производительности. Как правило, вам нужны индексы для столбцов, по которым вы будете искать. Так что, если вы, вероятно, захотите посмотреть строку на tag
, тогда определенно имеет смысл поместить туда индекс. Но если у вас есть адресная книга, вам (вероятно) не нужно будет искать по улице, почтовому индексу или номеру телефона, так что это не будет стоить потери производительности записи.
Ваши столбцы первичного ключа почти всегда будут иметь индекс, автоматически сгенерированный базой данных. И если вы хотите сохранить значения конкретного столбца уникальными, для обеспечения этого можно создать UNIQUE INDEX
.
Этот ТАК вопрос задает эмпирические правила для индексов базы данных, что может быть полезно.