Как работает индекс при составном UniqueConstraint?
Есть таблица, в которой используется составной UniqueConstraint для 3 столбцов. Есть ли смысл ставить индекс на отдельные столбцы, которые используются в данном UniqueConstraint, если поиск будет по этим отдельным полям или он уже ставиться под капотом?
В настоящее время (pg15) уникальное ограничение может быть только btree индексом.
Следовательно, общее для btree правило префиксного поиска. btree(a,b,c) может так же эффективно использоваться для поиска по префиксу - where a = ? или where a = ? and b = ? - но не может эффективно использоваться для where b = ? или where c = ?
или переделать этот уникальный индекс на btree (b,c,a). Всё ведь от запросов зависит, что и как нужно будет искать. Если нужны
where a = ?
where b = ?
where c = ?
то да, это будут нужны 3 индекса
Нужны будут непосредственно
where a = ?
where b = ?
Как я понял из вашего ответа, при использовании btree(a,b,c) where a = ? и так будет индексироваться, соответственно надо добавить только индекс для b?