Что такое "Сканирование растровой карты" в плане запроса?
Я хочу знать принцип "сканирования кучи битмапа", я знаю, что это часто происходит
когда я выполняю запрос с OR в условии.
Кто может объяснить принцип "сканирования кучи битмапа"?
Ответ 1
Лучшее объяснение приходит от Tom Lane, который является автором алгоритма, если я не ошибаюсь. См. Также статью статьи в википедии.
Короче говоря, это немного похоже на сканирование seq. Разница заключается в том, что вместо того, чтобы посещать каждую страницу на диске, индексы индексирования растрового индекса AND и ORs применяют индексы вместе и посещают только те страницы диска, которые ему нужны.
Это отличается от сканирования индекса, где индекс посещается по строкам по порядку - это означает, что страница диска может посещаться несколько раз.
Re: вопрос в вашем комментарии... Да, именно это.
Сканирование индекса будет проходить через строки один за другим, открывая страницы диска снова и снова, столько раз, сколько необходимо (некоторые из них, конечно, останутся в памяти, но вы получите точку).
Сканирование растрового индекса будет последовательно открывать краткий список дисковых страниц и захватывать каждую применимую строку в каждом из них (следовательно, так называемый перепроверка, который вы видите в планах запросов).
Обратите внимание, как в стороне, как порядок кластеризации/строки влияет на связанные затраты с помощью любого метода. Если строки находятся повсюду в случайном порядке, индекс растрового изображения будет дешевле. (И, фактически, если они действительно повсюду, сканирование seq будет самым дешевым, так как сканирование растрового индекса не лишено некоторых издержек.)