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


SELECT count( * ) FROM tickets



Pdf көрінісі
бет190/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   186   187   188   189   190   191   192   193   ...   243
Байланысты:
Язык SQL. Базовый курс

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


Выполните запросы, подсчитывающие количество строк, в которых атрибут
fare_conditions принимает одно из трех возможных значений. Каждый из запро-
сов выполните три-четыре раза, поскольку время может немного изменяться,
и подсчитайте среднее время. Обратите внимание на число строк, возвращае-
мое функцией count для каждого значения атрибута fare_conditions. При этом
среднее время выполнения запросов для трех различных значений атрибута
fare_conditions будет различаться незначительно, поскольку в каждом случае
СУБД просматривает все строки таблицы.
SELECT count( * ) FROM ticket_flights
WHERE fare_conditions = 'Comfort';
SELECT count( * ) FROM ticket_flights
WHERE fare_conditions = 'Business';
SELECT count( * ) FROM ticket_flights
WHERE fare_conditions = 'Economy';
Создайте индекс по столбцу fare_conditions. Конечно, в реальной ситуации та-
кой индекс вряд ли целесообразно создавать, но нам он нужен для эксперимен-
тов.
Проделайте те же эксперименты с таблицей ticket_flights. Будет ли различать-
ся среднее время выполнения запросов для различных значений атрибута
fare_conditions? Почему это имеет место?
В завершение этого упражнения отметим, что в случае ошибки планировщи-
ка при использовании индекса возможно не только отсутствие положительного
эффекта, но и значительный отрицательный эффект.
4. Для одной из таблиц создайте индекс по двум столбцам, причем по одному из
них укажите убывающий порядок значений столбца, а по другому — возраста-
ющий. Значения NULL у первого столбца должны располагаться в начале, а у
второго — в конце. Посмотрите полученный индекс с помощью команд утили-
ты psql


Достарыңызбен бөлісу:
1   ...   186   187   188   189   190   191   192   193   ...   243




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

    Басты бет