GROUP by num_tickets
ORDER BY num_tickets DESC;
Были проведены два эксперимента с параметрами планировщика
enable_hashjoin и enable_nestloop при наличии индекса по таблице tickets.
SET enable_hashjoin = off;
SET
SET enable_nestloop = off;
SET
Однако полученные планы детально рассмотрены не были.
Задание.
Проанализируйте эти планы. Посмотрите, в каких случаях использу-
ются и в каких не используются индексы по таблицам bookings и tickets. Вспом-
ните о таком понятии, как
селективность
, т. е. доля строк, выбираемых из таб-
лицы.
14. В столбцах таблиц могут содержаться значения NULL. При сортировке строк по
значениям таких столбцов СУБД по умолчанию ведет себя так, как будто зна-
чение NULL превосходит по величине любые другие значения. В результате по-
лучается, что если задан возрастающий порядок сортировки, то значения NULL
будут идти последними, если же порядок сортировки убывающий, тогда они бу-
дут первыми. Принимая решение о создании индексов, нужно учитывать требу-
емый порядок сортировки и желаемое расположение строк со значениями NULL
в выборке (в ее начале или в конце).
Давайте создадим таблицу, содержащую такое число строк, что использование
индекса планировщиком становится очень вероятным, и выполним с этой таб-
лицей ряд экспериментов.
CREATE TABLE nulls AS
SELECT num::integer, 'TEXT' || num::text AS txt
FROM generate_series( 1, 200000 ) AS gen_ser( num );
SELECT 200000
Проиндексируем таблицу по числовому столбцу. Поскольку мы не указываем
порядок сортировки явным образом, то по умолчанию он будет возрастающим,
как если бы мы использовали ключевое слово ASC.
Достарыңызбен бөлісу: