Уникальное и проверочное ограничение - PullRequest
0 голосов
/ 11 апреля 2020

Я добавил ограничение уникальности и ограничение проверки в таблицу PostgreSQL.

Теперь, когда я проверяю детали этой таблицы, ограничение уникальности отображается в разделе «Индексы», а ограничение проверки - нет.

Почему это поведение?

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

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

1 голос
/ 11 апреля 2020

См. Do c здесь: https://www.postgresql.org/docs/12/ddl-constraints.html#DDL -CONSTRAINTS-UNIQUE-CONSTRAINTS

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

Вы видите UNIQUE в разделе Индексы, потому что уникальный B -дерево индекса создано.

...