на строку?
Если речь о btree, то он содержит "значение" и ссылки на строки, которые это значение имеют. Это позволяет быстро осуществлять бинарный поиск внутри индекса, а также осуществлять операции сравнения. Начиная с Postgres 13 есть дедупликация ключей в btree, что существенно сокращает размер индекса в некоторых случаях.
Потому что значения всё равно нужны, чтобы искать в индексе (идити направо-налево). Плюс иногда можно после этого не идти в таблицу ,если не нужны другие колонки кроме индексных (т.н. index only scan)
Это какая то отдельная фича или достаточно просто обновиться?
Достаточно обновиться и перестроить индекс. У меня после этого индексы уменьшились в 2-3 раза (а весили они порядочно).
У меня индексы в 12м пг по 150 гигабайт весят
Тогда после оного могут вполне начать по 50-100гб весить, если дублей много.
Дублей вообще нет
Дубли имеются в виду не полностью строка, а именно значение столбца/столбцов, по которым построен индекс. Гарантированно нет дублей, пожалуй, в PK разве что (ну и прочие редкие случаи: там где есть UNIQUE индекс и т.д.).
вам кмк нужно разобраться и сформулировать свои требования, а не рандомно искать существующие фичи. Для какого вида запросов вам нужны индексы?
Обсуждают сегодня