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



Pdf көрінісі
бет228/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   224   225   226   227   228   229   230   231   ...   256
sql osnovi yazika

EXPLAIN SELECT *
FROM bookings
ORDER BY book_ref;
QUERY PLAN
----------------------------------------------------------------
Index Scan using bookings_pkey on bookings (cost=0.42..8511.24
rows=262788 width=21)
(1 строка)
Поскольку выводимые строки плана в утилите psql могут быть очень длинными, мы
будем вносить небольшие изменения в форматирование вывода при переносе плана
в текст пособия.
Обратите внимание, что первая оценка стоимости в плане — не нулевая. Это объяс-
няется тем, что, хотя индекс уже упорядочен, и дополнительная сортировка не требу-
ется, но для того, чтобы найти в индексе первую строку в соответствии с требуемым
порядком, тоже нужно некоторое время.
Если к сортировке добавить еще и условие отбора строк, то это отразится в дополни-
тельной строке верхнего (и единственного) узла плана.
EXPLAIN SELECT *
FROM bookings
WHERE book_ref > '0000FF' AND book_ref < '000FFF'
ORDER BY book_ref;
299


Глава 10. Повышение производительности
QUERY PLAN
---------------------------------------------------------------------
Index Scan using bookings_pkey on bookings (cost=0.42..9.50 rows=54
width=21)
Index Cond: ((book_ref > '0000FF'::bpchar) AND (book_ref <
'000FFF'::bpchar))
(2 строки)
Обратите внимание, что поскольку столбец, по которому производится отбор строк,
является индексируемым, то их отбор реализуется не через Filter, а через Index
Cond.
Теперь проиллюстрируем метод сканирования на основе битовой карты на при-
мере таблицы «Места».
EXPLAIN SELECT *
FROM seats
WHERE aircraft_code = 'SU9';
QUERY PLAN
------------------------------------------------------------------------
Bitmap Heap Scan on seats (cost=5.03..14.24 rows=97 width=15)
Recheck Cond: (aircraft_code = 'SU9'::bpchar)
-> Bitmap Index Scan on seats_pkey (cost=0.00..5.00 rows=97 width=0)
Index Cond: (aircraft_code = 'SU9'::bpchar)
(4 строки)
В этом плане в нижнем узле строится битовая карта, а в верхнем узле с помощью
этой карты сканируются страницы таблицы seats. Здесь также для отбора строк в со-
ответствии с предложением WHERE используется индекс — Index Cond. Обратите
внимание, что значение параметра width при создании битовой карты равно нулю,
поскольку сами строки на этом этапе еще не выбираются.
Если нам будет нужно выбрать только номера бронирований в каком-то диапазоне,
то обращения к таблице не потребуется: достаточно сканирования исключительно


Достарыңызбен бөлісу:
1   ...   224   225   226   227   228   229   230   231   ...   256




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

    Басты бет