Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Тоу Д. -> "Настройка SQL. Для профессионалов" -> 44

Настройка SQL. Для профессионалов - Тоу Д.

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 38 39 40 41 42 43 < 44 > 45 46 47 48 49 50 .. 161 >> Следующая


¦ Empl oyees (Fi rst Jlame)

¦ Employees(Nickname)

¦ Locations(Location_ID)

¦ Wage_Payments(Employee_ID)

Тогда вы получите следующий план выполнения:

$ cat head.sql tmp.sql tail.sql | db2 +c +p -t DB20000I The SQL command completed successfully.

DB20000I The SQL command completed successfully.

OPERATORJD TARGETJD OPERATORJ-YPE OBJECTJIAME COST

1 - RETURN - 2014

2 I MSJOIN - 2014

3 2 TBSCAN - 203

4 3 SORT - 203

5 4 TBSCAN LOCATIONS 202
88

3. Просмотр и интерпретация планов выполнения

6 2 FILTER - 1810
7 6 TBSCAN - 1810
8 7 SORT - 1810
9 В NLJOIN - 1810
10 9 FETCH EMPLOYEES 422
11 10 RIDSCN 100
12 11 SORT - 50
13 12 IXSCAN EMP_FIRST_NAME 50
14 11 SORT - 50
15 14 IXSCAN EMP NICKNAME 50
16 9 FETCH WAGE PAYMENTS 134
17 16 IXSCAN WAGE PYMNT EMP ID 50

17 record(s) selected.

$

Шаги со значениями идентификатора OPERAT0R_I D с 11 до 15 обозначают сбор объединения наборов идентификаторов строк по условиям для имени, объединенным OR1 для таблицы Е. Новый результирующий набор идентификаторов строк передается в шаг с OPERATOR_ID=10 для получения набора сотрудников с выбранным именем или прозвищем. Из этого списка DB2 выбирает выполнение вложенных циклов (NLJOIN) по направлению к Wage_Payments. Циклы останавливаются, как только появляется первое соответствие, так как это коррелированное соединение EXISTS. Это соединение со вложенными циклами обозначено как 0PERAT0R_ID=9. Оно отбрасывает все записи таблицы Employees, для которых подзапрос не находит соответствия в Wage_Payment. Так как DB2 считает, что на данный момент у нее все еще есть длинный список записей Employees, она выбирает единственное считывание таблицы Locations и соединение слиянием (MSJOIN) с записями Employees с сортировкой обоих наборов строк по ключам соединения.

Чтение планов выполнения в SQL Server

В Microsoft SQL Server применяется несколько подходов к созданию и отображению планов выполнения. При этом планы выполнения создаются и выводятся на экран в графическом или текстовом виде, а не помещаются в таблицы, как это делается в DB2 и Oracle.

ПРИМЕЧАНИЕ---------------------------------------------------------------

Если вы купили эту книгу, чтобы научиться настраивать Sybase Adaptive Server, мужайтесь. У этих двух баз данных общее наследие, и практически все, что я расскажу о Microsoft SQL Server, можно применить и к Sybase, кроме возможности графического отображения плана в SQL Server Query Analyzer, которую Microsoft добавил после того, как эти две версии разделились.

Отображение планов выполнения

В SQL Server реализованы два подхода к отображению планов выполнения: графический, встроенный в SQL Server Query Analyzer, и текстовый, который поддерживает сама база данных. На одном экране графического варианта не помещается полный план выполнения даже многотабличного запроса среднего размера.
Чтение планов выполнения в SQL Server

89

Поэтому я считаю, что при помощи графического отображения трудно ответить на ключевые вопросы о длинных планах выполнения.

¦ Каков порядок соединения?

¦ Какой метод используется для каждого соединения?

¦ Какой метод используется для доступа к каждой таблице?

При использовании текстового варианта отображения плана выполнения легко найти ответы на все три вопроса.

Графическое отображение планов выполнения

Чтобы увидеть графический вариант плана выполнения, нажмите на кнопку Display Estimated Execution Plan в утилите SQL Server Query Analyzer. В окне, где вы обычно видите результаты запроса, будет показана диаграмма, состоящая из стрелок, соединяющих набор значков и обозначающих тип действия (вложенные циклы, индексное считывание, табличный доступ и т. д.). Рядом с каждым значком есть текст, но он обычно достаточно краток, поэтому не содержит ничего полезного. Подведите к тексту курсор мыши, чтобы раскрыть окно, в котором будут приведены недостающие подробности. Кроме того, даже для простого четырехстороннего соединения диаграмма не помещается на экран целиком, даже если раскрыть окно Query Analyzer на полный экран. Мне графический подход кажется менее полезным, чем текстовый, на котором можно прочитать все необходимое.

Текстовое отображение планов выполнения

В этом случае необходимо поместить запрос в окно Query в SQL Server Query Analyzer после оператора SET SHOWPLAN_TEXT ON и нажать кнопку Execute Query.

SET SHOWPLAN_TEXT ON GO

SELECT E.First_Name. E.Last_Name. E.Salary. LE.Description.

M.First_Name. M.Last_Name. LM.Description FROM Locations LE. Locations LM. Employees M. Employees E WHERE E.Last_Name = 'Stevenson'

AND E.Manager_ID=M.Employee_ID

AND E.Location_ID=LE.Location_ID

AND M.Location_ID=LM.Location_ID

AND UPPER(LE.Description) = 'SAN FRANCISCO'

ПРИМЕЧАНИЕ ----------------------------------------------------------------------------

Если вы работаете в Sybase, просто замените выражение SHOWPLAN_TEXT словом SH0WPLAN. Если вы хотите получить более подробный план выполнения, в Microsoft SQL Server также можно использовать оператор SHOWP LAN_ALL.
Предыдущая << 1 .. 38 39 40 41 42 43 < 44 > 45 46 47 48 49 50 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100