предлагается, что если создаем внешний ключ - надо создать индекс по полю? Или оно только при удалении помогает, а в реальных условиях не дает прироста?
В документацыи постгреса это написано.
Потому что он может использоваться, например, только для обеспечения целостности (не используется в JOIN) - и тогда смысла в индексе никакого
Это действительно написано, проверка записи выполняется условно простым select
то есть если я не делаю удаления, в остальных случаях он может только мешать?
Есть, select выполняется всегда
так что делать :))))) Я уже пошел создавать индекс налево и направо, где есть по полю внешний ключ :))) Или кашу маслом....
Так вам вроде помогло?
Есть таблица с книгами (book) и полем user_id (на котором внешний ключ для обеспечения целостности данных), а есть таблица user с пользователями. Если я не делаю запросов на выборку из двух таблиц сразу, то зачем мне индекс на book.user_id?
Нет, почему. Как и любой индэкс — он добавляет возможных путей планировщику.
ок, пусть висит тогда индекс, даже если и лишний, как в том анекдоте про эстонца и дохлую ворону - "нэ приггодиллас" :)
Он не лишний, он позволяет вам быстро проверять fk. И не постится с truncate
Я пример просто привёл. Случай, когда индекс на поле с внешним ключом, на мой взгляд, не нужен. Могу ошибаться, конечно
ну лишний, в том плане, что при инсерте он лишние миллисекунды заберет
Ну удалите пользователя )))
Если такие запросы появятся, то индекс потребуется. Но это не значит, что он нужен ВСЕГДА
Можно посмотреть используются ли Ваши индексы SELECT * FROM pg_catalog.pg_stat_all_indexes where ....;
Обсуждают сегодня