Общие сведения об инструкции EXPLAIN

Завершено

С помощью инструкции EXPLAIN можно отобразить план выполнения запроса. EXPLAIN можно использовать с любыми инструкциями SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE и CREATE TABLE AS.

В объяснении отображается план выполнения для запроса, позволяющий понять, как Выполняется инструкция PostgreSQL, используются ли индексы, как объединяются таблицы, а также о том, как создаются таблицы, а также о затратах на запрос.

Синтаксис EXPLAIN выглядит следующим образом:

EXPLAIN [ (parameter [, ...] ) ] statement

Ниже перечислены необязательные параметры.

  • Анализ 
  • VERBOSE
  • COSTS
  • BUFFERS
  • FORMAT

Например:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Этот простой запрос возвращает следующую информацию:

Снимок экрана: план запроса.

Анализ 

Этот параметр выполняет инструкцию и возвращает план запроса. Выходные данные инструкции удаляются, но она все равно выполняется. Инструкции ROLLBACK и EXPLAIN ANALYZE можно объединить, чтобы предотвратить применение изменений с запросом, который вносит изменения в базу данных, например INSERT, UPDATE или DELETE. Например:

BEGIN;

> EXPLAIN ANALYZE INSERT INTO Animal 
> (ani_id, name, weight_kg, cat_id, enc_id) 
> VALUES (28, 'Robin Robin', 0.5, 1, 2);

ROLLBACK;

VERBOSE

Отображает дополнительные сведения, включая:

  • Список выходных столбцов для каждого узла в дереве плана
  • Имена таблиц и функций, квалифицированных по схеме
  • имена переменных в выражениях вместе с псевдонимом таблицы
  • Имя каждого триггера, для которого отображается статистика

COSTS

Включает предполагаемые начальные и общие затраты, а также количество строк и их предполагаемую ширину.

BUFFERS

Буферы можно использовать только с параметром ANALYZE. В PostgreSQL используется наиболее давно использовавшийся (LRU) кэш для хранения часто используемых данных в памяти. Буферы отображают объем данных, поступающих из кэша, и данных, извлеченных с диска. Отображается количество общих, локальных и временных выполненных блоков строк, операций чтения и записи. Данные, предоставляемые параметром BUFFERS, могут помочь изучить части запроса с большим количеством операций ввода-вывода.

FORMAT

Определяет формат выходных данных. XML, JSON и YAML содержат те же сведения, что и формат TEXT, но эти форматы проще использовать в программах. По умолчанию задан формат TEXT.