DatabasesLabWork3

Assignment

Составить запросы на языке SQL (пункты 1-2).

Для каждого запроса предложить индексы, добавление которых уменьшит время выполнения запроса (указать таблицы/атрибуты, для которых нужно добавить индексы, написать тип индекса; объяснить, почему добавление индекса будет полезным для данного запроса).

Для запросов 1-2 необходимо составить возможные планы выполнения запросов. Планы составляются на основании предположения, что в таблицах отсутствуют индексы. Из составленных планов необходимо выбрать оптимальный и объяснить свой выбор. Изменятся ли планы при добавлении индекса и как?

Для запросов 1-2 необходимо добавить в отчет вывод команды EXPLAIN ANALYZE [запрос]

Подробные ответы на все вышеперечисленные вопросы должны присутствовать в отчете (планы выполнения запросов должны быть нарисованы, ответы на вопросы - представлены в текстовом виде).

  1. Сделать запрос для получения атрибутов из указанных таблиц, применив фильтры по указанным условиям: Н_ТИПЫ_ВЕДОМОСТЕЙ, Н_ВЕДОМОСТИ. Вывести атрибуты: Н_ТИПЫ_ВЕДОМОСТЕЙ.ИД, Н_ВЕДОМОСТИ.ИД. Фильтры (AND): a) Н_ТИПЫ_ВЕДОМОСТЕЙ.НАИМЕНОВАНИЕ = Перезачет. b) Н_ВЕДОМОСТИ.ИД = 1250972. c) Н_ВЕДОМОСТИ.ИД = 1250981. Вид соединения: LEFT JOIN.

  2. Сделать запрос для получения атрибутов из указанных таблиц, применив фильтры по указанным условиям: Таблицы: Н_ЛЮДИ, Н_ВЕДОМОСТИ, Н_СЕССИЯ. Вывести атрибуты: Н_ЛЮДИ.ИД, Н_ВЕДОМОСТИ.ИД, Н_СЕССИЯ.ЧЛВК_ИД. Фильтры (AND): a) Н_ЛЮДИ.ФАМИЛИЯ < Иванов. b) Н_ВЕДОМОСТИ.ИД < 1490007. Вид соединения: INNER JOIN.

Scripts

1.sql

2.sql

Usage

Usage for PostgreSQL with psql util:

psql -h $PG_HOST -d $PG_DATABASE -c '\i ${number}.sql'