Как стать автором
Обновить

Комментарии 6

Спасибо! Позаимствую парочку идей для своей Java-библиотеки
pg-index-health
НЛО прилетело и опубликовало эту надпись здесь

То есть выгоднее ставить «первыми» поля, имеющие как можно меньше уникальных значений.

Но ведь наоборот, при единичной выборке значения, если первым полем в индексе будет В, а вторрым будет поле А, то за меньшее количество шагов сканирования, мы отбросим больше данных!

То есть будет выше селективность индекса.

Вот тут я приводил пример, что BA-индекс даже занимает больше места при обычной модели использования.

Даже если индекс будет больше, что с того, при более селективном индексе быстрее найдется запись, при этом переберется меньше значений, то есть размер индекса не основной показатель, важнее скорость доступа к листу (количество seek шагов).

Предположим, что нам придется вычитать за несколько итераций все элементы индекса. В обоих случаях их количество будет одним и тем же, но суммарный прочитанный объем - разным. То есть и "в среднем" доступ к одной записи более объемного индекса окажется "дороже".

А селективность у них одинаковая, поскольку все равно необходимо при поиске пройти по всем полям индекса.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий