Учебно-практическое пособие москва 2017 ббк



Pdf көрінісі
бет233/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   229   230   231   232   233   234   235   236   ...   243
Байланысты:
Язык SQL. Базовый курс

EXPLAIN ANALYZE
SELECT num_tickets, count( * ) AS num_bookings
FROM (
SELECT b.book_ref, count( * )
FROM bookings b, tickets t
WHERE date_trunc( 'mon', b.book_date ) = '2016-09-01'
AND t.book_ref = b.book_ref
GROUP BY b.book_ref
) AS count_tickets( book_ref, num_tickets )
GROUP by num_tickets
ORDER BY num_tickets DESC;
QUERY PLAN
------------------------------------------------------------------
GroupAggregate (cost=16966.67..16978.53 rows=200 width=16)
(actual time=4092.258..4219.477 rows=5 loops=1)
Group Key: count_tickets.num_tickets
-> Sort (cost=16966.67..16969.96 rows=1314 width=8)
(actual time=4092.236..4161.294 rows=165534 loops=1)
Sort Key: count_tickets.num_tickets DESC
Sort Method: external merge Disk: 2912kB
-> Subquery Scan on count_tickets
(cost=16858.57..16898.61 rows=1314 width=8)
(actual time=3176.113..3862.133 rows=165534 loops=1)
-> GroupAggregate
(cost=16858.57..16885.47 rows=1314 width=15)
(actual time=3176.111..3765.157 rows=165534 loops=1)
Group Key: b.book_ref
-> Sort (cost=16858.57..16863.16 rows=1834 width=7)
(actual time=3176.098..3552.334 rows=230699 loops=1)
Sort Key: b.book_ref
Sort Method: external merge Disk: 3824kB
-> Hash Join (cost=5632.24..16759.16 rows=1834 width=7)
(actual time=498.701..1091.509 rows=230699 loops=1)
Hash Cond: (t.book_ref = b.book_ref)
245


-> Seq Scan on tickets t
(cost=0.00..9733.33 rows=366733 width=7)
(actual time=0.047..170.792 rows=366733 loops=1)
-> Hash (cost=5615.82..5615.82 rows=1314 width=7)
(actual time=498.624..498.624 rows=165534
loops=1)
,

Buckets: 262144 (originally 2048)
Batches: 2 (originally 1)
Memory Usage: 3457kB
-> Seq Scan on bookings b
(cost=0.00..5615.82 rows=1314 width=7)
(actual time=0.019..267.728 rows=165534
loops=1)
,

Filter: (date_trunc('mon'::text, book_date) =
'2016-09-01 00:00:00+08'::timestamp
with time zone)
,

Rows Removed by Filter: 97254
Planning time: 2.183 ms
Execution time: 4221.133 ms
(21 строка)
В данном плане используется соединение хешированием (Hash Join). При этом ин-
декс по таблице tickets игнорируется: она просматривается последовательно (Seq
Scan on tickets t). Время выполнения модифицированного запроса оказывается
несколько большим, чем в предыдущем случае, когда в запросе присутствовал корре-
лированный подзапрос. Таким образом, можно заключить, что для ускорения работы
оригинального запроса можно было либо создать индекс, либо модифицировать сам
запрос, даже не создавая индекса.
Другие методы оптимизации выполнения запросов представлены в разделе «Кон-
трольные вопросы и задания». Рекомендуем вам самостоятельно с ними ознакомить-
ся и поэкспериментировать.
Перед выполнением упражнений нужно восстановить измененные значения пара-
метров:


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




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

    Басты бет