Индекс с одним столбцом и с несколькими столбцами для отдельных, но всегда вместе соединений - PullRequest
0 голосов
/ 25 марта 2019

Если у меня есть схема, подобная этой:

profile_network
---
id profile_id(fk) school_type_id(fk) school_major_type_id(fk) school_degree_type_id(fk)

И запрос, который всегда будет использоваться для объединения всех этих запросов в соответствующие таблицы поиска:

LEFT JOIN "profile_network" ON "profile_network"."profile_id" = "profile"."id"
LEFT JOIN "profile_network_school_type" ON "profile_network:school_type"."id" = "profile_network"."school_type_id"
LEFT JOIN "profile_network_school_major_type" ON "profile_network:school_major_type"."id" = "profile_network"."school_major_type_id"
LEFT JOIN "profile_network_school_degree_type" ON "profile_network:school_degree_type"."id" = "profile_network"."school_degree_type_id"

Должен ли ясоздать 4 индекса для каждого отдельного столбца (col1)(col2)(col3)(col4) или 1 индекс для всех столбцов (col1, col2, col3, col4)?

1 Ответ

1 голос
/ 25 марта 2019

Это зависит от выбранного типа соединения:

  • При соединении с вложенным циклом может помочь индекс условия соединения таблиц поиска.

  • Для хеш-объединения индекс не помогает.

  • Для объединения слиянием может помочь индекс состояния соединения таблицы поиска thr.

Все зависит от количества элементов.

Многостолбцовый индекс - определенно неправильная вещь.

...