Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Цель: исследования эффективности индексов.
FInt1 целочисленное, 4 байта, not null
FInt2 целочисленное, 4 байта, null
FChar1 строковое, фиксированной длины в 6 символов, not null
FChar2 строковое, фиксированной длины в 6 символов, null
FStr1 строковое, переменной длины длины в 500 символов, not null
FStr2 строковое, переменной длины длины в 500 символов, null
FDate1 датавремя, not null
FDate2 датавремя, null
FDec1 дробное с фиксированной точностью (18 разрядов, 6 после запятой), not null
FDec2 дробное с фиксированной точностью (18 разрядов, 6 после запятой), null
В отчёт включить скрипт создания таблицы
Для каждой записи определить @i номер записи и @i2 остаток от деления на 10000 от номера записи
Поля заполнить следующими данными:
FInt1 @i
FInt2 @i2
FChar1 @i
FChar2 @i2
FStr1 строка в 200 символов + @i (конкатенацией)
FStr2 строка в 200 символов + @i2 (конкатенацией)
FDate1 любая постоянная для всей таблицы дата + кол-во секунд, равное @i
FDate2 любая постоянная для всей таблицы дата + кол-во секунд, равное @i2
FDec1 (@i в виде дробного числа) / 10000
FDec2 (@i2 в виде дробного числа) / 10000
Т.к. выполнение подобного запроса займёт достаточно много времени, то рекомендуется отладить запрос на добавлении 1000 записей, а затем выполнить на 1 млн. Записать для отчёта время выполнения запроса.
После добавления записей выполнить сжатие БД (Task/Shrink/Database). Записать для отчёта размер БД (есть в свойствах БД).
В отчёт включить скрипт запроса, время выполнения на 1 млн. и размер сжатой БД после заполнения таблицы.
А) Создать первичных ключ (кластерный) по полю FInt1, при этом ключе по очереди создать некластерные индексы по всем полям с цифрой 2 (FInt2, FChar2, FStr2, FDate2, FDec2), т.е. одновременно не должно быть более одного кластерного ключа и одного некластерного индекса;
Б) Создать первичных ключ (кластерный) по полю FChar1, при этом ключе по очереди создать некластерные индексы по всем полям с цифрой 2;
B) Создать первичных ключ (кластерный) по полю FStr1, при этом ключе по очереди создать некластерные индексы по всем полям с цифрой 2;
Г) Создать первичных ключ (кластерный) по полю FDate1, при этом ключе по очереди создать некластерные индексы по всем полям с цифрой 2;
B) Создать первичных ключ (кластерный) по полю FDec1, при этом ключе по очереди создать некластерные индексы по всем полям с цифрой 2.
В отчёт включить скрипты и следующие заполненные таблицы:
Таблица 1. Продолжительность создания индексов (сек.)
Ключ |
Создание |
Инд. Int |
Инд. Char |
Инд. Varchar |
Инд. Datetime |
Инд. Decimal |
Int |
Время (с) |
Время (с) |
… |
… |
… |
… |
Char |
Время (с) |
Время (с) |
… |
… |
… |
… |
Varchar |
… |
… |
… |
… |
… |
… |
Datetime |
… |
… |
… |
… |
… |
… |
Decimal |
… |
… |
… |
… |
… |
… |
Таблица 2. Размер индексов (МБ)
Ключ |
Создание |
Инд. Int |
Инд. Char |
Инд. Varchar |
Инд. Datetime |
Инд. Decimal |
Int |
Размер объекта |
Размер объекта |
… |
… |
… |
… |
Char |
Размер объекта |
Размер объекта |
… |
… |
… |
… |
Varchar |
… |
… |
… |
… |
… |
… |
Datetime |
… |
… |
… |
… |
… |
… |
Decimal |
… |
… |
… |
… |
… |
… |
Размер объекта можно вычислить либо как разницу между размерами сжатой БД до и после операции, либо с помощью системной функции sp_spaceused.
А) Написать запрос, который выбирает 1000 записей из таблицы Т1, соответствующие какому либо диапазону из 1000 значений поля FInt1. Записать время выполнения запроса для отчёта.
Б) Написать запрос который выбирает записи, соответствующие каким-либо 10-ти значениям поля FChar2. Записать время выполнения запроса для отчёта.
В) Написать запрос, который выбирает записи, соответствующие какой-либо определенному часу поле FDate1 (диапазону значений от начала до конца этого часа). Записать время выполнения запроса для отчёта.
Г) Создать ключ с кластерным индексом по полю FInt1. Выполнить запросы из п. 4.А., 4.Б. и 4.В. Записать продолжительности выполнения запросов для отчёта.
Д) Создать некластерные индексы по полям FChar2 и FDate1. Выполнить запросы из п. 4.Б. и 4.В. Записать продолжительности выполнения запросов для отчёта.
Е) (Удалить все индексы и ключи) Создать ключ по полю FStr1. Создать некластерные индексы по полям FInt1, FChar2 и FDate1. Выполнить запросы из п. 4.А., 4.Б. и 4.В. Записать продолжительности выполнения запросов для отчёта.
В отчёт включить скрипты всех запросов и следующую таблицу (в ячейках время выполнения (в секундах) соответствующих запросов в условиях отсутствия ключей, наличия ключей и индексов по полю, которое использует соответствующий запрос):
Таблица 3. Использование индексов (время выполнения запросов, сек.)
Запрос |
Без ключа |
Ключ FInt1 |
Ключ FInt1 + некласт. индекс |
Ключ FStr1 + некласт индекс |
4.А (по FInt1) |
||||
4.Б (по FChar2) |
||||
4.С (по FDate1) |