Общие сведения об инструкции 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 — это значение по умолчанию.