Подтвердить что ты не робот

Что такое "Сканирование растровой карты" в плане запроса?

Я хочу знать принцип "сканирования кучи битмапа", я знаю, что это часто происходит когда я выполняю запрос с OR в условии.

Кто может объяснить принцип "сканирования кучи битмапа"?

4b9b3361

Ответ 1

Лучшее объяснение приходит от Tom Lane, который является автором алгоритма, если я не ошибаюсь. См. Также статью статьи в википедии.

Короче говоря, это немного похоже на сканирование seq. Разница заключается в том, что вместо того, чтобы посещать каждую страницу на диске, индексы индексирования растрового индекса AND и ORs применяют индексы вместе и посещают только те страницы диска, которые ему нужны.

Это отличается от сканирования индекса, где индекс посещается по строкам по порядку - это означает, что страница диска может посещаться несколько раз.


Re: вопрос в вашем комментарии... Да, именно это.

Сканирование индекса будет проходить через строки один за другим, открывая страницы диска снова и снова, столько раз, сколько необходимо (некоторые из них, конечно, останутся в памяти, но вы получите точку).

Сканирование растрового индекса будет последовательно открывать краткий список дисковых страниц и захватывать каждую применимую строку в каждом из них (следовательно, так называемый перепроверка, который вы видите в планах запросов).

Обратите внимание, как в стороне, как порядок кластеризации/строки влияет на связанные затраты с помощью любого метода. Если строки находятся повсюду в случайном порядке, индекс растрового изображения будет дешевле. (И, фактически, если они действительно повсюду, сканирование seq будет самым дешевым, так как сканирование растрового индекса не лишено некоторых издержек.)