МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 3
На тему: “ Оптимізація запитів ”
З дисципліни : " Бази даних. Частина 2 "
Лектор:
Доцент
Павич Н.Я.
Тема роботи: Оптимізація запитів
Мета роботи: Навчитися використовувати оптимізатор запитів.
Індивідуальне завдання
Створити базу даних із архітектурою таблиць згідно варіанту.
Внести відповідні дані у таблиці.
Виконати індивідуальне завдання згідно варіанту для відповідної навчальної бази даних.
Проглянути план виконання запиту.
Використовуючи SQL Query Аnalyzer и SQL Profiler здійснити оптимізацію запиту. Якщо запит надто простий, то ускладнити його штучно зайвими операціями.
Привести отриманий план запиту.
Варіант 21*. З точністю до 2-х десяткових знаків визначте середнє число знарядь всіх лінійних кораблів.
Хід виконання завдань:
1.Створюємо базу даних із архітектурою таблиць згідно варіанту.
2. Вніс дані в таблиці.
Виконав індивідуальне завдання :
Варіант 21*. З точністю до 2-х десяткових знаків визначте середнє число знарядь всіх лінійних кораблів.
Запит:
USE Classes
go
SET STATISTICS IO ON;
DELETE FROM p
WHERE num!=0
go
insert into p(num)
select AVG(numGuns) from Classes
where type='bb'
go
SELECT LEFT(num, 5)
FROM p
SET STATISTICS IO OFF;
go
select * from Classes
План виконання запиту:
Результат виконання:
Повідомлення про ввід/вивід:
Table 'p'. Scan count 2, logical reads 19, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'p'. Scan count 0, logical reads 13, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Classes'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'p'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Оптимізований запит:
USE Classes
go
CREATE INDEX i1 ON dbo.p(num)
CREATE INDEX i2 ON dbo.Classes(numGuns)
SET STATISTICS IO ON;
DELETE FROM p
WHERE num!=0
go
insert into p(num)
select AVG(numGuns) from Classes
where type='bb'
go
SELECT LEFT(num, 5)
FROM p
SET STATISTICS IO OFF;
go
select * from Classes
Повідомлення про ввід/вивід:
Table 'p'. Scan count 2, logical reads 42, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'p'. Scan count 0, logical reads 17, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Classes'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'p'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
План виконання оптимізованого запиту:
Висновок: на даній лабораторній роботі я навчився використовувати оптимізатор запитів та поглядати план виконання запиту.