Означает ли уникальный индекс по двум столбцам индекс по каждому из них? - PullRequest
2 голосов
/ 01 июля 2010

В моей схеме есть таблица с уникальным ограничением на два столбца:

UNIQUE(Column1, Column2)

Документация SQlite сообщает, что создает уникальный индекс для этих столбцов .У меня вопрос: делает ли это явно созданный индекс для одного из столбцов, скажем Column1, избыточным?

Ответы [ 2 ]

4 голосов
/ 01 июля 2010

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

Позвольте привести пример. Индекс для этих столбцов:

a, b, c, d, e, f

Может также служить индексом для следующих комбинаций столбцов:

a, b, c, d, e
a, b, c, d
a, b, c
a, b
a

Итак, по вашему вопросу: индекс, который у вас есть, также может служить индексом для столбца 1, но не для столбца 2.

4 голосов
/ 01 июля 2010

Да для вашего примера, нет для вашего вопроса.

Составной индекс в 2 столбца сделает дополнительный индекс для первый один избыточным.Однако индекс в столбце second может быть полезен.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...