Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оптимизация SQL.doc
Скачиваний:
14
Добавлен:
29.08.2019
Размер:
1.7 Mб
Скачать
      1. Оценка соединения q1 и q2 методом smj

Продолжение алгоритма JoinPlan (Q1, Q2) (см. п. 1.7.4):

// Оценка стоимости соединения R и S методом SMJ, i=2

// (формулы (5.9), используются данные из str[1], str[2] - см.

// пункты 1.8.3 и 1.8.4).

// Таблица Q уже отсортирована по номеру счета, так как

// имеется индекс по этому атрибуту.

      1. Выбор метода соединения q1 и q2 и заполнение структуры

Продолжение алгоритма JoinPlan (Q1, Q2) (см. п. 1.7.4):

// Стоимость соединения Q1 и Q2

С = min(С1 2)= min(660, 340) = С2 =340 (мс) // SMJ

// Текущая стоимость плана

С = str[1].Z + str[2].Z + C = 0,32 + 11000 + 340 11340 (мс),

// где str[1].Z и str[2].Z – стоимости выбора записей из

// исходных таблиц R1 и R2 (см. пункты 1.8.3 и 1.8.4),

// С (справа) – стоимость соединения по методу SMJ.

// Стоимость ввода/вывода

СI/O = str[1].ZIO + str[2].ZIO + CI/O 2 = 0,3 + 10000 + 10 ≈ 10010 (мс).

// Значения полей V структуры str[3] (формулы (5.10) в п. 1.6.4):

.

Заполнение структуры str[3] (п. 1.7.2):

str[3] = {{Q1, Q2}, {Q1}, {Q2}, // W, X, Y

11340, 10010, // Z, ZIO

{2, 1, {2}, 2} } // V - , B, I, k

      1. Оценка и выбор метода соединения q2 и q1

В алгоритме динамического программирования (см. п. 1.7.1):

n = 2, i = 2, P = (Q1, Q2), Qj = Q1 .

В JoinPlan (Q2, Q1) (см. п. 1.7.4):

R = P – Q1 = Q2, S = Q1 , "а" – атрибут "номер_счета".

Алгоритм:

m1 = 2, m2 = 1 // номера экземпляров в структуре str, т.к.

// str[m1=2].W= Q2 и str[m2=1].W= Q1

// Оценка стоимости соединения R и S (см. формулы пунктов 1.8.5 и

// 1.8.6)

1. NLJ, i=1

2. SMJ, i=2

// Стоимость соединения Q2 и Q1

С = min(С12) = С2= 340 (мс) // SMJ

// Текущая стоимость плана

С = str[2].Z + str[1].Z + C = 11340 (мс)

Запись str[3] не изменяется, так как старое значение str[3].Z совпадает с новым значением (C).

      1. Вывод физического плана

Алгоритм OptPlanReturn (см. п. 1.7.5):

1. метод 2 (т.е. SMJ)

2. Q1 = метод 2

(т.е. IndexScan(R1, код_пользователя = 3) +

Filter (реализация проекции по номеру счета)

)

3. Q2 = метод 1

(т.е. TableScan(R2) +

Filter (селекция по условию остаток > 1500 и реализация

проекции по остатку и номеру счета)

)

Метод чтения записей из R2 (чтение всех записей) является причиной высокой стоимости выполнения запроса.

На Рис. 1 .25 представлен разработанный оптимальный физический план в графическом виде.

Рис. 1.25. Представление физического плана в графическом виде.