Операции сканирования в SQL: типы и оптимизация

Операции сканирования таблицы

1. Seq Scan (Sequential Scan)

Описание: Полное сканирование таблицы. Каждая строка таблицы проверяется на соответствие условиям запроса.

Вызывается: Отсутствие подходящих индексов или когда условия WHERE не могут использовать существующие индексы.

Эффективность: Неэффективно для больших таблиц. Для оптимизации:

  • Создавайте индексы на столбцах, используемых в условиях WHERE
  • Используйте колонки партицирования в WHERE для сканирования только нужных партиций
  • Минимизируйте объем обрабатываемых данных как можно раньше в WHERE

Источник

2. Index Scan

Описание: Использование индекса для поиска строк, соответствующих условиям запроса.

Вызывается: Наличие подходящего индекса в условии WHERE.

Эффективность: Эффективно, так как используются индексы для быстрого доступа к данным.

Источник

3. Index Only Scan

Описание: Извлекает все необходимые данные непосредственно из индекса, не обращаясь к самой таблице.

Вызывается: Когда все запрашиваемые столбцы содержатся в индексе.

Эффективность: Очень эффективно, так как уменьшает количество операций сопоставления.

Источник

4. Bitmap Index Scan и Bitmap Heap Scan

Описание: Bitmap Index Scan создает битовую карту для строк, которые соответствуют условиям, а затем Bitmap Heap Scan использует эту карту для извлечения строк из таблицы.

Вызывается: Когда запрос извлекает много строк, но не все, и есть подходящие индексы.

Эффективность: Эффективно для запросов с множественными условиями фильтрации.

Источник

Резюме операций сканирования

Seq Scan эффективен только для маленьких таблиц. Index Scan и Index Only Scan значительно ускоряют запросы при наличии подходящих индексов. Bitmap Scan оптимален для запросов, извлекающих среднее количество строк с несколькими условиями. Для оптимальной производительности создавайте индексы на часто используемых в WHERE столбцах и используйте партицирование для больших таблиц.