powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Внешние ключи
2 сообщений из 2, страница 1 из 1
Внешние ключи
    #39947031
Сисдба Мастеркеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Если ли различие в порядке создания ?

1. Сначала FK, потом индекс
Код: sql
1.
2.
ALTER TABLE some_table ADD CONSTRAINT fk_session FOREIGN KEY (session_id) REFERENCES sessions (id);
CREATE INDEX some_table_session_id_idx ON some_table (session_id);


2. Сначала индекс, потом FK
Код: sql
1.
2.
CREATE INDEX some_table_session_id_idx ON some_table (session_id);
ALTER TABLE some_table ADD CONSTRAINT fk_session FOREIGN KEY (session_id) REFERENCES sessions (id);



Второй вариант сильно быстрее и практически не блокирует работу с sessions.

ПС: some_table - большая, около 2млрд записей
ППС: индекс нужен.
...
Рейтинг: 0 / 0
Внешние ключи
    #39947068
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба Мастеркеевич
Если ли различие в порядке создания ?

Сисдба Мастеркеевич
Второй вариант сильно быстрее

Когда ответ содержится в вопросе.

Ну а для без долгой блокировки:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE INDEX CONCURRENTLY some_table_session_id_idx ON some_table (session_id);
begin;
set local statement_timeout to '1s';
ALTER TABLE some_table ADD CONSTRAINT fk_session FOREIGN KEY (session_id) REFERENCES sessions (id) not valid;
commit;
ALTER TABLE some_table validate CONSTRAINT fk_session;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Внешние ключи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]