SELECT count( * )
FROM tickets
WHERE passenger_name = 'IVAN IVANOV';
Вы увидите, что время выполнения повторных запросов к таблице сокращает-
ся, причем, когда создан индекс, оно сокращается на порядок. Как вы думаете,
почему?
3. Известно, что индекс значительно ускоряет работу, если при выполнении за-
проса из таблицы отбирается лишь небольшая часть строк. Если же эта доля
велика, скажем, половина строк или более, то большого положительного эффек-
та от наличия индекса уже не будет, а возможно даже, что не будет практически
никакого эффекта. Наша задача — проверить это утверждение на практике.
Обратимся к таблице «Перелеты» (ticket_flights). В ней имеется столбец
«Класс обслуживания» (fare_conditions), который отличается от остальных
тем, что в нем могут присутствовать лишь три различных значения: Comfort,
Business и Economy.
Если секундомер в утилите psql выключен, то включите его.
Выполните запросы, подсчитывающие количество строк, в которых атрибут
fare_conditions принимает одно из трех возможных значений. Каждый из
запросов выполните три-четыре раза, поскольку время может немного изме-
няться, и подсчитайте среднее время. Обратите внимание на число строк, ко-
торые возвращает функция count для каждого значения атрибута. При этом
среднее время выполнения запросов для трех различных значений атрибута
fare_conditions будет различаться незначительно, поскольку в каждом слу-
чае СУБД просматривает все строки таблицы.
SELECT count( * )
FROM ticket_flights
WHERE fare_conditions = 'Comfort';
SELECT count( * )
FROM ticket_flights
WHERE fare_conditions = 'Business';
251
Глава 8. Индексы
SELECT count( * )
FROM ticket_flights
Достарыңызбен бөлісу: |