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

Все-Таки, почему не пишется нигде (может не читал) и не

предлагается, что если создаем внешний ключ - надо создать индекс по полю? Или оно только при удалении помогает, а в реальных условиях не дает прироста?

17 ответов

10 просмотров

В документацыи постгреса это написано.

Потому что он может использоваться, например, только для обеспечения целостности (не используется в JOIN) - и тогда смысла в индексе никакого

Это действительно написано, проверка записи выполняется условно простым select

Delphi-Photo Автор вопроса
Dmitriy Sviridov
Потому что он может использоваться, например, толь...

то есть если я не делаю удаления, в остальных случаях он может только мешать?

Delphi-Photo Автор вопроса
Konstantin Zaitsev
Есть, select выполняется всегда

так что делать :))))) Я уже пошел создавать индекс налево и направо, где есть по полю внешний ключ :))) Или кашу маслом....

Konstantin Zaitsev
Есть, select выполняется всегда

Есть таблица с книгами (book) и полем user_id (на котором внешний ключ для обеспечения целостности данных), а есть таблица user с пользователями. Если я не делаю запросов на выборку из двух таблиц сразу, то зачем мне индекс на book.user_id?

Delphi Photo
то есть если я не делаю удаления, в остальных случ...

Нет, почему. Как и любой индэкс — он добавляет возможных путей планировщику.

Delphi-Photo Автор вопроса
Ilya Anfimov
Нет, почему. Как и любой индэкс — он добавляет воз...

ок, пусть висит тогда индекс, даже если и лишний, как в том анекдоте про эстонца и дохлую ворону - "нэ приггодиллас" :)

Он не лишний, он позволяет вам быстро проверять fk. И не постится с truncate

Я пример просто привёл. Случай, когда индекс на поле с внешним ключом, на мой взгляд, не нужен. Могу ошибаться, конечно

Delphi-Photo Автор вопроса
Konstantin Zaitsev
Он не лишний, он позволяет вам быстро проверять fk...

ну лишний, в том плане, что при инсерте он лишние миллисекунды заберет

Konstantin Zaitsev
Ну удалите пользователя )))

Если такие запросы появятся, то индекс потребуется. Но это не значит, что он нужен ВСЕГДА

Delphi Photo
ок, пусть висит тогда индекс, даже если и лишний, ...

Можно посмотреть используются ли Ваши индексы SELECT * FROM pg_catalog.pg_stat_all_indexes where ....;

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта