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



Pdf көрінісі
бет221/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   217   218   219   220   221   222   223   224   ...   243
Байланысты:
Язык SQL. Базовый курс

сканирования по
индексу
.
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 могут быть очень длинными, мы
будем вносить небольшие изменения в форматирование вывода при переносе плана
в текст пособия.
232


Обратите внимание, что первая оценка стоимости в плане — не нулевая. Это объяс-
няется тем, что, хотя индекс уже упорядочен, и дополнительная сортировка не требу-
ется, но для того, чтобы найти в индексе первую строку в соответствии с требуемым
порядком, тоже нужно некоторое время.
Если к сортировке добавить еще и условие отбора строк, то это отразится в дополни-
тельной строке верхнего (и единственного) узла плана.
EXPLAIN
SELECT * FROM bookings
WHERE book_ref > '0000FF' AND book_ref < '000FFF'
ORDER BY book_ref;
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.
Теперь проиллюстрируем метод
сканирования на основе битовой карты
на при-
мере таблицы «Места» (seats).
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   ...   217   218   219   220   221   222   223   224   ...   243




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

    Басты бет