Использование EXPLAIN

EXPLAIN — команда в PostgreSQL, которая показывает план выполнения запроса.

    Выполнение запроса с помощью EXPLAIN

    Перед выполнением запроса, планировщик формирует план выполнения, посмотреть план выполнения можно с помощью команды EXPLAIN.
    Структура плана запроса представляет собой деревовидную структуру из узлов( plan nodes ). Узлы на нижнем уровне отвечают за просмотр и выдачу строк с помощью методов доступа, если требуется дополнительные операции (агрегирование, соединение, сортировка), над узлами выборки будут располагаться дополнительные узлы дерева.
    Для каждого узла дерева команда EXPLAIN выводит одну строку с оценкой стоимости операции на каждом узле

    demo=# EXPLAIN SELECT * FROM bookings.aircrafts; QUERY PLAN ---------------------------------------------------------- Seq Scan on aircrafts (cost=0.00..1.09 rows=9 width=52) (1 row)

    Seq Scan - последовательный просмотр (sequential scan), т.е. перебираются все строки, так как в выбрке не используется условие WHERE
    cost=0.00 - оценка ресурсов, в данном случае = 0 так как запрос не пользует дополнительные операции
    1.09 - общая оценка стоимости запроса
    9 - число строк
    52 - ширина строки или размер строки в байтах
    При использовании дополнительного условия WHERE будет видно дополнительные критери

    demo=# EXPLAIN SELECT * FROM bookings.aircrafts WHERE model ~'^Air'; QUERY PLAN ---------------------------------------------------------- Seq Scan on aircrafts (cost=0.00..1.11 rows=1 width=52) Filter: (model ~ '^Air'::text) (2 rows)

    Оценка числа строк изменилась на 1, по факту в выводе будет 3 строки, 2 rows это не число строк в выбрке а число строк текущей команды
    Более сложный запрос с сортировкой данных

    demo=# EXPLAIN SELECT * FROM bookings.aircrafts demo-# ORDER BY aircraft_code ; QUERY PLAN ---------------------------------------------------------------- Sort (cost=1.23..1.26 rows=9 width=52) Sort Key: aircraft_code -> Seq Scan on aircrafts (cost=0.00..1.09 rows=9 width=52) (3 rows)

    Здесь дополнительный узел указывается стрелкой ->
    На верхнем поле выполняется сортировка выбранных строк и занимет время 1.23
    Нужно понимать, что времени на саму сортировку потребуется меньшь, так как 1.23 это не только сортировка, сюда еще входит оценка стоимости получения выборки 1.09
    Когда таблица слишком мала, то операция поиска по индексу не даст хороший результат, так как обращение к индексу по сути это дополнительная операция


    Источники
    Последнее изменение: 19.10.2024 13:30


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ