Создает ли индекс уникальное ограничение в Postgres? - PullRequest
0 голосов
/ 06 марта 2020

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

CREATE TABLE products (
   product_no integer UNIQUE NOT NULL,
   name text,
   price numeric
);

Затем, если я вставлю значения в таблицу, postgres (или любая подобная СУБД) будет на самом деле проверять каждую строку таблица или индекс создается автоматически? Если индекса нет, это очень быстро становится дорогим [O (N!)].

1 Ответ

2 голосов
/ 06 марта 2020

Да и нет. Postgres проверяет, что product_no еще не был вставлен. Это делается путем проверки индекса , а не отдельных строк.

Уникальное ограничение реализовано с использованием индекса, поэтому проверка на дублирование выполняется O (log n), а не O (n).

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