Назад к вопросам
OZON
Middle+
7
От чего зависит Index Only Scan vs Index Scan в PostgreSQL?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В PostgreSQL выбор между Index Scan и Index Only Scan зависит от того, может ли планировщик получить все необходимые для запроса данные непосредственно из индекса, без обращения к основной таблице (heap).
Index Only Scan используется, если:
- Все запрашиваемые столбцы присутствуют в индексе (индекс покрывает запрос).
- Статистика visibility map показывает, что строки в таблице не были изменены и видимы для текущей транзакции, что позволяет избежать чтения из основной таблицы.
Если хотя бы один из этих условий не выполняется, PostgreSQL использует обычный Index Scan, при котором после поиска в индексе происходит обращение к основной таблице для получения данных.
Пример: если у вас есть индекс по столбцам (id, name), и запрос выбирает только эти поля, то может быть использован Index Only Scan. Если же запрос требует другие поля, не покрытые индексом, будет обычный Index Scan.