172 похожих чатов

Добрый день! Есть ли разница между следующими определениями таблиц и

доступом к ним?
1. Две таблицы имеют только индексы. Запрос соединяет таблицы по имеющимся индексам.
2. Одна таблица "главная", вторая таблица "подчинённая" с внешним ключом на главную таблицу. Запрос соединяет таблицы по внешнему ключу и primary key.

7 ответов

17 просмотров

Буквы разные = разница есть. Какую задачу Вы решаете?

Denis-Kitrish Автор вопроса
Антон Казачков
Буквы разные = разница есть. Какую задачу Вы решае...

Ускорение запросов. Коллега по цеху говорит, что если в подчинённой таблице будет foreign key, то доступ будет быстрее. Мне интересно найти какую-либо информацию есть ли разница в скорости для больших таблиц, если имеются обычные индексы и соединять их по ним в одном случае, и, если есть foreign key в другом случае. Для foreign key ведь создаётся индекс, если я правильно понимаю, аналогичный обычному, значит разницы при соединении не должно быть. Но могу и ошибаться

1) Есть. Выполните pg_dump -- результат будет разным. Так что разница есть. 2) primary key -- это обязательно unique, так что планировщик чётко будет знать, что на каждую запись подчинённой таблицы добавится не более одной записи главной таблицы. Это повлияет на оцэнки количества строк в планировщике, и потому можэт повлиять на выбранный план. 3) Когда-то были ещё какие-то оцэнки по primary key/остальные ключи... Но вроде с тех пор оно засунуто в то, что я описал под п.2, потому остальное не так важно. Но я не уверен.

Denis Kitrish
Ускорение запросов. Коллега по цеху говорит, что е...

Делайте сначала правильно, "оптимизировать" будете когда что-то не то станет со скоростью. Если у вас значение одной таблицы ссылается на ключ другой -- то делайте foreign key.

Denis Kitrish
Ускорение запросов. Коллега по цеху говорит, что е...

А если оно ссылается не на ключ -- то вы делаете что-то неправильно.

Denis Kitrish
Ускорение запросов. Коллега по цеху говорит, что е...

В дополнение к ответу @tzirechnoy — FK влияют на планирование запросов: https://t.me/pgsql/302476

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта