Filter: (model ~ 'Air'::text)
Поскольку наложено условие отбора строк, то оценка их числа изменилась с 9 на 1. В
данном случае планировщик неточно оценил число выбираемых строк — фактически
их будет три.
Обратите внимание, что по своей форме вывод команды EXPLAIN также является вы-
боркой, поэтому в конце выборки, как обычно, выводится информация о числе строк
в ней, т. е. в дереве плана. Это не число строк, которые будут выбраны из таблицы. В
данном случае это
(2 строки)
Теперь усложним запрос, добавив в него сортировку данных:
EXPLAIN SELECT * FROM aircrafts ORDER BY aircraft_code;
QUERY PLAN
----------------------------------------------------------------
Sort (cost=1.23..1.26 rows=9 width=52)
Sort Key: aircraft_code
-> Seq Scan on aircrafts (cost=0.00..1.09 rows=9 width=52)
(3 строки)
Дополнительный узел обозначен на плане символами «
−
>
».
Хотя по столбцу aircraft_code создан индекс (для поддержки первичного ключа), пла-
нировщик предпочел не использовать этот индекс, а прибегнуть к последовательно-
му сканированию (Seq Scan) таблицы, о чем говорит нам нижний узел плана. На верх-
нем узле выполняется сортировка выбранных строк. Поскольку для выполнения сор-
тировки требуется время, отличное от нуля, то этот факт и отражен в первой числовой
оценке — 1,23. Это оценка времени, которое потребуется для того, чтобы приступить
к выводу отсортированных строк. Но времени непосредственно на саму сортировку
потребуется меньше: ведь в оценку 1,23 входит и оценка стоимости получения вы-
борки — 1,09.
Когда таблица очень маленькая, то обращение к индексу не даст выигрыша в скоро-
сти, а лишь добавит к операциям чтения страниц, в которых хранятся строки таблиц,
еще и операции чтения страниц с записями индекса.
Обратимся к таблице «Бронирования» (bookings) для иллюстрации
Достарыңызбен бөлісу: