Email or username:

Password:

Forgot your password?
Joinny Hash

#федичитальня #postgresql #postgresql15

Сортировка по индексу.

#Btree #индексы можно и для сортировки за O(n) использовать без буферизации всех строк где-либо. Но с неопределёнными значениями и порядком сортировки есть нюанс - положение их в индексе задаётся при создании и, если запрашиваемое положение отличается, то индекс не может быть использован.

Вообще странно, что не воткнули костыль для простейших случаев, если nulls не там, просто читаем индекс с другого конца, до тех пор, пока не наткнёмся на не #null, после чего начнём читать индекс так, как изначально и планировалось, до тех пор, пока не на кнёмся на null, который послужит нам эдаким EOF. Сложность чтения бы сохранилась линейной, всего пару переменных и ифников для стейт-контрола добавить. Не думаю, что это был бы значимый оверхед.

4 comments
𝔹𝕖𝕚ℤ𝕖𝕣𝕠

@strizhechenko не совсем понял, btree индекс же уже отсортирован, он просто умеет отдавать записи в правильном порядке, сортировки фактически не происходит или я глупенький и не понимаю о чём ты?

iliazeus

@strizhechenko не совсем понимаю: null-значения могут быть в любом месте btree-индекса, получается? Или они собраны на одном отрезке?

Go Up