Учебное пособие Санкт-Петербург «бхв-петербург»


SET enable_hashjoin = off



Pdf көрінісі
бет233/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   229   230   231   232   233   234   235   236   ...   256
sql osnovi yazika

SET enable_hashjoin = off;
Чтобы запретить планировщику использовать метод соединения слиянием, нужно
сделать так:
SET enable_mergejoin = off;
А для того чтобы запретить планировщику использовать соединение методом вло-
женного цикла, нужно сделать так:
SET enable_nestloop = off;
По умолчанию все эти параметры имеют значение on (включено).
Необходимо уточнить, что в результате выполнения вышеприведенных команд не
накладывается полного запрета на использование конкретного метода соединения
наборов строк. Методу просто назначается очень высокая стоимость, но планиров-
щик все равно сохраняет возможность маневра, и даже такой «запрещенный» метод
может быть использован. Более подробно этот вопрос рассматривается в одном из
примеров в разделе «Контрольные вопросы и задания».
305


Глава 10. Повышение производительности
Давайте запретим планировщику использовать метод соединения слиянием:
SET enable_mergejoin = off;
SET
Теперь повторим предыдущий запрос:
EXPLAIN SELECT t.ticket_no,
t.passenger_name,
tf.flight_id,
tf.amount
FROM tickets t
JOIN ticket_flights tf ON t.ticket_no = tf.ticket_no
ORDER BY t.ticket_no;
QUERY PLAN
----------------------------------------------------------------------
Sort (cost=226400.55..229014.87 rows=1045726 width=40)
Sort Key: t.ticket_no
-> Hash Join (cost=16824.49..64658.49 rows=1045726 width=40)
Hash Cond: (tf.ticket_no = t.ticket_no)
-> Seq Scan on ticket_flights tf (cost=0.00..18692.26
rows=1045726 width=24)
-> Hash (cost=9733.33..9733.33 rows=366733 width=30)
-> Seq Scan on tickets t (cost=0.00..9733.33 rows=366733
width=30)
(7 строк)
Теперь планировщик выбирает слияние хешированием. Полученные оценки стои-
мости выполнения запроса будут значительно выше, а вывод результирующих строк
начнется значительно позднее, чем при использовании метода соединения слияни-
ем. На это указывает значение параметра cost для верхнего узла дерева плана:
cost=226400.55..229014.87
В команде EXPLAIN можно указать опцию ANALYZE, что позволит выполнить запрос
и вывести на экран фактические затраты времени на выполнение запроса и число
фактически выбранных строк. При этом, хотя запрос и выполняется, сами результи-
рующие строки не выводятся.
Сначала разрешим планировщику использовать метод соединения слиянием:


Достарыңызбен бөлісу:
1   ...   229   230   231   232   233   234   235   236   ...   256




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет