Это зависит.
Предполагая, что мы говорим только о индексах по умолчанию B-Tree. Если задействованы другие типы индексов, такие как GIN или GiST, все не так просто.
В принципе, индекс на (a,b)
полезен для поиска только a
, а другой индекс только (a)
не нужен. (But an additional index on just (b)
generally makes sense!)
Это may все еще будет хорошей идеей, если столбец b
большой, так что индекс только (a)
существенно меньше.
Вам необходимо будет рассмотреть размер таблицы, доступную оперативную память, типичные запросы, используемые типы данных, размер индекса, накладные расходы на каждый кортеж и размер данных, data alignment and padding ... или просто запустить тесты с помощью фактические данные и запросы (но осторожно, что вы действительно тестируете).
Например, если a
и b
не являются больше чем 4 байта (integer
, smallint
, date
, ...) индекс на (a,b)
точно так, как большой, как и на просто (a)
и нет никакого смысла вообще держать второй.
A more detailed answer on dba.SE for this case exactly.
manual for the current version of Postgres всегда является хорошим источником для получения более подробной информации.
Вы не указали тип второго индекса. Фактически, вам нужно будет опубликовать определение таблицы, включая соответствующие столбцы и определения индексов, чтобы получить окончательный ответ - используйте '\ d tbl' в psql. –