Некоторые методы сканирования данных, которые используются в PostgreSQL при выполнении запросов:
- Последовательное сканирование (sequential scan). 13 Данные извлекаются напрямую из табличных страниц, минуя индексы, согласно критериям отбора. 3 Если запрос не содержит условий WHERE, извлекаются все строки таблицы. 3 Этот метод эффективен при низкой селективности выборки, то есть когда нужно получить большую часть строк или все строки таблицы. 3
- Индексное сканирование (index scan). 1 Используется при большом наборе проиндексированных данных. 1 Метод доступа возвращает идентификаторы версий строк по одному за раз. 4
- Исключительно индексное сканирование (index only scan). 1 Некоторые индексы вместе с идентификаторами строк хранят сами значения. 1 Этот метод позволяет читать индекс, не обращаясь к таблицам с данными, и забирать результат прямо из индекса. 1
- Сканирование по битовой карте (bitmap scan). 1 Применяется при относительно большой выборке, когда она слишком большая для того, чтобы использовать индексное сканирование, но в то же время не настолько большая, чтобы применять обычное последовательное сканирование каждой строки. 1 Преимущество метода в том, что он работает при поиске более чем по одному индексу. 1
- TID Scan. 5 Специальный узел, который читает из таблицы версии строк по известным идентификаторам. 4
Выбор метода сканирования зависит от запроса и других параметров, таких как размер таблицы, селективность выборки и другие. 5