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


WHERE fare_conditions = 'Economy'



Pdf көрінісі
бет196/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   192   193   194   195   196   197   198   199   ...   256
sql osnovi yazika

WHERE fare_conditions = 'Economy';
Создайте индекс по столбцу fare_conditions. Конечно, в реальной ситуации
такой индекс вряд ли целесообразен, но нам он нужен для экспериментов.
Проделайте те же эксперименты с таблицей ticket_flights. Будет ли разли-
чаться среднее время выполнения запросов для различных значений атрибута
fare_conditions? Почему это имеет место?
В завершение этого упражнения отметим, что в случае ошибки планировщи-
ка при использовании индекса возможно не только отсутствие положительного
эффекта, но и значительный отрицательный эффект.
4. Для одной из таблиц создайте индекс по двум столбцам, причем по одному из
них укажите убывающий порядок значений столбца, а по другому — возрастаю-
щий. Значения NULL у первого столбца должны располагаться в начале, а у вто-
рого — в конце. Посмотрите полученный индекс с помощью команд psql
\d имя_таблицы
\di+ имя_индекса
Обратите внимание, что первая команда выведет не только имя индекса, но так-
же и имена столбцов, по которым он создан, а вторая команда выведет размер
индекса.
Подберите запросы, в которых созданный индекс предположительно должен
использоваться, а также запросы, в которых он использоваться, по вашему мне-
нию, не будет. Проверьте ваши гипотезы, выполнив запросы. Объясните полу-
ченные результаты.
5. В сложных базах данных целесообразно использование комбинаций индек-
сов. Иногда бывают более полезны комбинированные индексы по нескольким
столбцам, чем отдельные индексы по единичным столбцам. В реальных ситу-
ациях часто приходится делать выбор, т. е. находить компромисс, между, на-
пример, созданием двух индексов по каждому из двух столбцов таблицы либо
созданием одного индекса по двум столбцам этой таблицы, либо созданием всех
трех индексов. Выбор зависит от того, запросы какого вида будут выполняться
чаще всего. Предложите какую-нибудь таблицу в базе данных «Авиаперевозки»
и смоделируйте ситуации, в которых вы приняли бы одно из этих трех возмож-
ных решений. Воспользуйтесь документацией на PostgreSQL.
252


Контрольные вопросы и задания
6. Предложите какую-нибудь таблицу в базе данных «Авиаперевозки» и смодели-
руйте ситуацию, в которой было бы целесообразно использование индекса на
основе функции или скалярного выражения от двух или более столбцов.
7.* В разделе документации 5.3.5 «Внешние ключи» говорится о том, что в неко-
торых ситуациях бывает целесообразно создавать индекс по столбцам внешне-
го ключа ссылающейся таблицы. Это позволит ускорить выполнение операций
DELETE и UPDATE над главной (ссылочной) таблицей.
Подумайте, есть ли такие таблицы в базе данных «Авиаперевозки», в отноше-
нии которых было бы целесообразно поступить так, как говорится в докумен-
тации.
8.* В тексте главы был показан пример использования частичного индекса для таб-
лицы «Бронирования». Для его создания мы выполняли команду


Достарыңызбен бөлісу:
1   ...   192   193   194   195   196   197   198   199   ...   256




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

    Басты бет