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

Завершено

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

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

Синтаксис для EXPLAIN:

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

Необязательные параметры:

  • АНАЛИЗИРОВАТЬ
  • МНОГОСЛОВНЫЙ
  • ЗАТРАТЫ
  • БУФЕРЫ
  • ФОРМАТ

Например:

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;

МНОГОСЛОВНЫЙ

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

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

ЗАТРАТЫ

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

БУФЕРЫ

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

ФОРМАТ

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