Изменения

Перейти к: навигация, поиск

Этапы обработки запроса. Перезапись запросов

1602 байта добавлено, 11:17, 20 декабря 2021
Нет описания правки
== Обработка запроса ==
 
=== Мотивирующий пример ===
 
Пусть есть следующая база данных:
 
<var>Students(SId, FirstName, LastName, GId, Year)</var>
* $10^4$ записей
* Индексы: <var>(SId)</var> (кластеризованный), <var>(GId)</var>
 
<var>Groups(GId, Name)</var>
* $10^3$ записей
* Индексы: <var>(GId)</var> (кластеризованный), <var>(Name)</var>
 
И следующий запрос:
 
Фамилии студентов группы M3439
 
select LastName
from Students natural join Groups
where Name = 'M34391'
 
Планы запросов без индексов
 
План 1
* $π_{FirstName}(σ_{Name=M34391}(σ_{S.GId=G.GId}(S × G)))$
* $10^4·10^3 + 10^4·10^3 + 10^4 + 20 ≈ 2·10^7$ операций
 
План 2
* $π_{Name}(σ_{Name=M34391}(S ⋈ G))$
* $10^4·10^3 + 10^4 + 20 ≈ 10^7$ операция
 
План 3
* $π_{Name}(S ⋈ σ_{Name=M34391}(G))$
* $10^3 + 10^4 + 20 ≈ 10^4$ операций
 
Планы запросов с индексами
 
План 4. <var>Students(GId)</var>
* $π_{Name}(S ⋈ σ_{Name=M34391}(G))$
* $10^3 + (3 + 20) + 20 ≈ 10^3$ операций
 
План 5. <var>Groups(Name)</var>, <var>Students(GId)</var>
* $π_{Name}(S ⋈ σ_{Name=M34391}(G))$
* $2 + (3 + 20) + 20 ≈ 45$ операций
 
От выбора плана сильно зависит производительность
 
Наиболее медленный план $2·10^7$ операций
 
Наиболее быстрый план $45$ операций
 
=== Обработка запроса ===
== Перезапись запроса ==
Анонимный участник

Навигация