Sobes.tech
Назад к вопросам
Middle+
7

От чего зависит Index Only Scan vs Index Scan в PostgreSQL?

Компании, где спрашивали
OZONOZON

Ответ от нейросети

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.