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



Pdf көрінісі
бет247/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   243   244   245   246   247   248   249   250   ...   256
sql osnovi yazika

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;
322


Контрольные вопросы и задания
Мы экспериментировали с параметрами планировщика enable_hashjoin и
enable_nestloop при наличии индекса по таблице tickets.
SET enable_hashjoin = off;
SET enable_nestloop = off;
Однако полученные планы детально рассмотрены не были.
Задание.
Проанализируйте эти планы. Посмотрите, в каких случаях использу-
ются и в каких не используются индексы по таблицам bookings и tickets.
Вспомните о таком понятии, как селективность, т. е. доля строк, выбираемых
из таблицы.
14. В столбцах таблиц могут содержаться значения NULL. При сортировке строк по
значениям таких столбцов СУБД по умолчанию ведет себя так, как будто зна-
чение NULL превосходит по величине любые другие значения. В результате по-
лучается, что если задан возрастающий порядок сортировки, то значения NULL
будут идти последними, если же порядок сортировки убывающий, тогда они бу-
дут первыми. Принимая решение о создании индексов, нужно учитывать требу-
емый порядок сортировки и желаемое расположение строк со значениями NULL
в выборке (в ее начале или в конце).
Давайте создадим таблицу, содержащую такое число строк, что использование
индекса планировщиком становится очень вероятным, и выполним с этой таб-
лицей ряд экспериментов.
CREATE TABLE nulls AS
SELECT num::integer, 'TEXT' || num::text AS txt


Достарыңызбен бөлісу:
1   ...   243   244   245   246   247   248   249   250   ...   256




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

    Басты бет