Оптимізація запитів в SQL Server 2008

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Звіт
Предмет:
Інформаційні технології
Група:
ПІ

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут комп’ютерних наук та інформаційних технологій Кафедра ПЗ ЗВІТ до лабораторної роботи №3 з дисципліни «Бази даних (частина ІІ)» на тему: «Оптимізація запитів в SQL Server 2008» Мета: Навчитись підвищувати продуктивність запитів в SQL Server 2008, використовуючи оптимізатор запитів. Завдання 1.Створити базу даних з наступною архітектурою таблиць: - Classes (class, type, country, numGuns, bore, displacement) - Ships (name, class, launched) - Battles (name, date) - Outcomes (ship, battle, result) 2.Всі новостворені об’єкти бази даних помістити у наперед створену схему бази даних. 3.Внести відповідні дані у таблиці. 4.Знайти назви кораблів з гарматами калібру 16 дюймів (врахувати кораблі з таблиці Outcomes). 5.Проглянути план виконання запиту. 6.Використовуючи SQL Query Analyzer і SQL Profiler, здійснити оптимізацію запиту. 7.Привести отриманий план запиту. Хід роботи 1.Створення бази даних і чотирьох таблиць: Classes, Ships, Battles, Outcomes; встановлення зв’язків між ними:  2.Поміщення всіх таблиць у наперед створену схему бази даних Ships, яка задана схемою за замовчуванням для користувача бази даних:  3.Внесення у таблиці відповідних даних: Таблиця Classes:  Таблиця Ships:  Таблиця Battles:  Таблиця Outcomes:  4.Запит, який повертає назви кораблів з гарматами калібру 16 дюймів з урахуванням кораблів з таблиці Outcomes: SELECT name FROM Ships.Ships WHERE class IN (SELECT class FROM Ships.Classes WHERE bore = 16) UNION SELECT ship FROM Ships.Outcomes WHERE ship IN (SELECT class FROM Ships.Classes WHERE bore = 16) Назви кораблів з гарматами калібру 16 дюймів:  5.План виконання запиту:  Додаткові дані про останню вартісну операцію (Union):  6.Створення унікального некластерного індексу, що покриває звернення до таблиці Ships: CREATE UNIQUE NONCLUSTERED INDEX ShipIndex ON Ships.Ships(name) INCLUDE (class) Створення на базі таблиці Classes віртуальної таблиці з назвами класів з гарматами калібру 16 дюймів та індексу до неї: CREATE VIEW Ships.ClassBore16 WITH SCHEMABINDING AS SELECT class AS ShipClass FROM Ships.Classes WHERE bore = 16 GO CREATE UNIQUE CLUSTERED INDEX ClassViewIndex ON Ships.ClassBore16(ShipClass) GO Оптимізований запит з використанням створених індексів, вибором з таблиці Outcomes тільки різних значень і заміною найбільш вартісної операції Union операцією Concatenation: SELECT name AS ShipName FROM Ships.Ships WITH (INDEX = ShipIndex) WHERE class IN (SELECT ShipClass FROM Ships.ClassBore16 WITH (NOEXPAND)) UNION ALL SELECT DISTINCT ship AS ShipName FROM Ships.Outcomes WHERE ship IN (SELECT ShipClass FROM Ships.ClassBore16 WITH (NOEXPAND)) 7.План виконання запиту:  Додаткові дані про останню вартісну операцію (Concatenation):  Порівняння виконання початкового і оптимізованого запитів за допомогою трасування в SQL Profiler, а також порівняння 100-кратного виконання цих запитів:  Висновок: На цій лабораторній роботі я навчився підвищувати продуктивність запитів в SQL Server 2008, використовуючи оптимізатор запитів; створив власну базу даних, вніс у неї відповідні дані та здійснив оптимізацію запиту до неї за допомогою SQL Query Analyzer і SQL Profiler.
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!