Растерното изображение на страниците се създава динамично за всяка заявка. Не се кешира или използва повторно и се изхвърля в края на сканирането на растерния индекс.
Няма смисъл да създавате растерно изображение на страницата предварително, защото съдържанието му зависи от предикатите на заявката .
Да кажем, че търсите x=1 and y=2
. Имате b-дърво индекси на x
и y
. PostgreSQL не комбинира x
и y
в растерно изображение, след което потърсете в растерното изображение. Той сканира индекс x
за адреса на страницата на всички страници с x=1
и прави растерно изображение, където страниците, които може да съдържат x=1
са верни. След това сканира y
търси адресите на страниците, където y
може да е равно на 2
, правейки растерно изображение от това. След това им прави И, за да намери страници, където и двете x=1
и y=2
може да е вярно. Накрая сканира самата таблица, като чете само страниците, които може да съдържат стойности на кандидати, чете всяка страница и запазва само редовете, където x=1 and y=2
.
Сега, ако търсите нещо като кеширан, предварително изграден растерен индекс, има такова нещо в PostgreSQL 9.5:BRIN индекси . Те са предназначени за много големи таблици и предоставят начин за намиране на диапазони от таблицата, които могат да бъдат прескочени, тъй като е известно, че не съдържат желана стойност.