Разница создания unique в PostgreSQL 14.0
Заметил следующее, что при создание UNIQUE двумя разными способами в PostgreSQL 14.0, скорость выполнения SELECT-запросов , различается. При создание таблицы таким способом:
create table a2
(
c1 integer
unique,
c2 integer
);
Скорость выполнения SELECT-запросов будет быстрее, чем таблица, созданная следующим образом:
create table a4
(
c1 integer
constraint u_1
unique,
c2 integer
);
Пример результатов выполнения запросов:
1
postgres.public> SELECT * FROM a2 WHERE c1 IN (1,2434534,132,123,546,58,234,4567567,234,435634576354,10)
[2022-04-01 18:51:39] 9 rows retrieved starting from 1 in 64 ms (execution: 4 ms, fetching: 60 ms)
postgres.public> SELECT * FROM a4 WHERE c1 IN (1,2434534,132,123,546,58,234,4567567,234,435634576354,10)
[2022-04-01 18:51:39] 9 rows retrieved starting from 1 in 67 ms (execution: 4 ms, fetching: 63 ms)
2
postgres.public> SELECT * FROM a2 WHERE c1 IN (1,2434534,132,123,546,58,234,4567567,234,435634576354,10)
[2022-04-01 18:51:42] 9 rows retrieved starting from 1 in 37 ms (execution: 3 ms, fetching: 34 ms)
postgres.public> SELECT * FROM a4 WHERE c1 IN (1,2434534,132,123,546,58,234,4567567,234,435634576354,10)
[2022-04-01 18:51:42] 9 rows retrieved starting from 1 in 60 ms (execution: 4 ms, fetching: 56 ms)
3
postgres.public> SELECT * FROM a2 WHERE c1 IN (1,2434534,132,123,546,58,234,4567567,234,435634576354,10)
[2022-04-01 18:51:43] 9 rows retrieved starting from 1 in 42 ms (execution: 5 ms, fetching: 37 ms)
postgres.public> SELECT * FROM a4 WHERE c1 IN (1,2434534,132,123,546,58,234,4567567,234,435634576354,10)
[2022-04-01 18:51:43] 9 rows retrieved starting from 1 in 71 ms (execution: 4 ms, fetching: 67 ms)
Чем обусловлено такое поведение PostgreSQL? И чем CONSTRAINT в создание таблицы замедляет скорость выполнения запроса?