Первое число означает оценку ресурсов, требуемых для того, чтобы приступить к вы-
воду данных. В нашем примере эта оценка равна нулю, поскольку никакие дополни-
тельные операции с выбранными строками не предполагаются, и PostgreSQL может
сразу же выводить прочитанные строки.
Второе число — это оценка общей стоимости выполнения запроса. Формируя эту
оценку, планировщик исходит из предположения, что данный узел плана запроса вы-
полняется до конца, т. е. извлекаются все имеющиеся строки таблицы. Однако в ряде
случаев на практике это может оказаться и не так, если узел-родитель прекратит свою
работу досрочно, например, в случае использования в запросе SELECT предложения
LIMIT, которое ограничивает выборку записей из таблицы конкретным их числом.
Обе оценки стоимости выполнения выражаются в неких
условных единицах
, которые
вычисляются на основе ряда параметров сервера баз данных. При этом не важно, в
каких конкретно единицах производится измерение стоимости: важны соотноше-
ния стоимостей. Для каждого запроса планировщик формирует несколько планов.
При сравнении различных вариантов плана, как правило, для выполнения выбира-
ется тот, который имеет наименьшую общую стоимость выполнения запроса. Одна-
ко при работе с курсорами этот принцип можно изменить с помощью специального
параметра планировщика cursor_tuple_fraction (курсоры в учебном пособии не рас-
сматриваются).
Далее в выводе идет общее число строк, которые должны быть извлечены (возвра-
щены) на данном узле плана, также при условии выполнения этого узла до полного
завершения. В нашем примере число строк равно 9. Это число является оценкой, ко-
торую планировщик получает на основе статистики, накапливаемой в специальных
системных таблицах.
Последним параметром узла плана идет оценка среднего размера строк, которые вы-
водятся на данном узле плана запроса. В нашем примере размер (ширина) строки
данных оценивается в 52 байта.
В том случае, когда нас не интересуют численные оценки, можно воспользоваться
параметром COSTS OFF:
Достарыңызбен бөлісу: