Відповіді:
Найкраще пояснення виходить від Тома Лейн , який є автором алгоритму, якщо я не помиляюся. Дивіться також статтю у Вікіпедії .
Словом, це трохи схоже на сканування послідовності. Різниця полягає в тому, що замість того, щоб відвідувати кожну сторінку диска, сканування індексу растрових зображень AND та OR, застосовні індекси разом, і відвідує лише ті сторінки диска, які їй потрібні.
Це відрізняється від сканування індексів, де індекс відвідується рядком за рядком, тобто сторінка диска може відвідуватися кілька разів.
Re: питання у вашому коментарі ... Так, саме так.
Сканування покажчиків проходитиме через рядки по черзі, відкриваючи сторінки диска знову і знову стільки разів, скільки потрібно (деякі, звичайно, залишаться в пам’яті, але ви отримаєте крапку).
Сканування індексу растрових зображень послідовно відкриє короткий список сторінок дисків і захоплює кожну застосовану рядок у кожній (звідси так звана умова повторної перевірки, яку ви бачите в планах запитів).
Зауважте, як осторонь, як кластеризація / порядок рядків впливає на пов’язані витрати з будь-яким методом. Якщо рядки в усьому місці в довільному порядку, індекс растрової карти буде дешевшим. (І насправді, якщо вони дійсно є в усьому світі , послідовне сканування буде найдешевшим, оскільки сканування індексу растрових зображень не обходиться без накладних витрат.)
index-only scan
запит, коли в запит звертається лише індексований стовпець. у цьому випадку index-only scan
не потрібно отримувати доступ до даних купи (сторінки даних): postgresql.org/docs/12/indexes-index-only-scans.html