#postgresql
#postgresql
Вопрос:
Например, если я создам индекс на
A, B, C
А затем впоследствии создавать индекс на
A, B, D
Используется ли исходная часть A, B повторно или все создается заново с нуля?
Ответ №1:
Нет, каждый индекс — это новый отдельный объект. Проверьте pg_class.
Редактировать: Вам не нужно создавать два индекса, содержащих столбцы A и B дважды. Создайте индекс для A, B и C, а затем другой индекс для D. PostgreSQL может использовать два индекса, когда это необходимо.
Комментарии:
1. Если вы используете один из C или D намного чаще, чем другой, вы можете даже индексировать на (A, B, C) и (D) тоже (обратный D является более популярным). Индекс из 3 столбцов может использоваться для удовлетворения запросов (A, B), а затем объединяться с индексом на (D). Это нужно делать только в том случае, если комбинация (A, B, C) действительно распространена, потому что индекс из 3 столбцов будет больше, чем индекс из 2 столбцов.
Ответ №2:
Это новый индекс каждый раз, как отметил Фрэнк.
Также обратите внимание, что часто индекса в один столбец на самом деле достаточно, если вы постоянно не упорядочиваете по C с соответствующим where
ограничением на A и B вместе с предложением limit . Если нет, планировщик Postgres будет достаточно умен, чтобы использовать растровый индекс, как описано в примечаниях к документации по многоколоночным индексам.