4 индекса в одной таблице

Есть таблица запросы к которой идут по 4 разным полям

Иногда запросы идут только по одному из полей, иногда по двум (имею ввиду по одному или двум полям в запросе после WHERE)

Значение полей на которые хочу создать индекс не меняются после добавления, а соседние поля на которые индекс не нужен меняются часто.

Как лучше сделать, просто создать индекс на все 4 поля или лучше разделить данные на несколько таблиц ?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Слишком многое зависит от

Слишком многое зависит от таблицы и запросов, чтобы дать однозначный ответ.
Советую прогнать запросы с EXPLAIN и посмотреть планы запросов.
А так в общем случае вполне достаточно одного составного индекса на все четыре поля.
А не в общем случае, надо либо строить отдельные индексы по каждому полю, либо для каких-то полей строит отдельные индексы, а для каких-то составные из тех что используются в запросе.

Спасибо за ответ, EXPLAIN

Спасибо за ответ, EXPLAIN пока слишком сложно проанализировать
Один составной индекс на все 4 поля ок понял, но думаю лучший вариант, если все правильно понял такой

нужно просто взять все используемые запросы и построить индексы так как они идут в запросе

то есть к примеру у меня 4 запроса

1) Используеться только поле1
2) Используеться поле1 и поле2
3) Используеться поле1 и поле3
4) Используеться поле1 и поле4

Делаю 4 индекса,
1) только на поле1
2) на поле1 и поле2
3) на поле1 и поле3
4) поле1 и поле4

и при запросе постгрес сам определит какой из 4 индексов ему использовать ?
или помтгрес так не работает и будет только хуже ?

В общем случае, мыслите

В общем случае, мыслите верно. Но как я уже говорил, всё зависит от запросов и таблиц. В каких-то случаях индексы наоборот могут замедлить работу, вместо ускорения. Поэтому и нужен EXPLAIN.

По EXPLAIN понятно как

По EXPLAIN понятно как разберусь обязательно сделаю.
Но я хочу понять если я создам 4 индекса, и как я написал там будет в каждом повторяться поле1
постгрес сам сможет выбрать в зависимости от запроса какой индекс лучше использовать ?

Если бы СУБД всегда могла

Если бы СУБД всегда могла выбрать лучший вариант, зачем были бы нужны мы, администраторы СУБД?
В каких-то случаях автоматика справляется, в каких-то нет. Как я уже говорил, многое зависит от таблиц и запросов.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023