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

 

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

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

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 144 145 146 147 148 149 < 150 > 151 152 153 154 155 156 .. 161 >> Следующая


Если вы сравните эти количества строк, считываемых вложенными циклами, с пороговыми значениями для выбора полного сканирования таблицы, то увидите, что соединения хэшированием с полным сканированием таблицы сокращают стоимость для нескольких таблиц. Так как ни один из фильтров в этом запросе не был достаточно селективным, чтобы предпочесть индексный доступ к одной таблице полному сканированию таблицы (считая граничным значением 5 %), то следует выбрать соединения хэшированием с наборами строк, считанными при помощи полного сканирования таблиц, если вы решите, что соединения хэшированием вообще стоит использовать для данного запроса. Этот пример демонстрирует необычно привлекательный случай для использования соединений хэшированием. Более распространенные примеры, с запросами к большим таблицам, имеющим, по меньшей мере, один селективный фильтр, демонстрируют несколько более мелкие улучшения при использовании соединений хэшированием только с самыми маленькими таблицами.

В таблице А.2 перечислены количества строк, вычисленные для лучшего надежного плана, а также граничные значения, при достижении которых соединения хэшированием с полным сканированием таблицы работают быстрее. В правом столбце, «Метод/соединение», перечислены оптимальные методы доступа к таблицам и соединения для каждой таблицы в левом столбце.

Таблица А.2. Лучшие методы доступа и соединения для данного примера

Таблица Количество строк Граничное значение для выбора полного сканирования таблицы Строки, считанные надежным планом Метод/соединение
СЗ 10 ООО 500 2 000 Полное сканирование/ведущее
ВЗ 60 000 3 000 12 000 Полное сканирование/хэширование
А2 60 000 3 000 12 000 Полное сканирование/хэширование
С2 30 000 1500 3 600 Полное сканирование/хэширование
D2 150 8 1440 Полное сканирование/хэширование
Dl 6 000 300 1008 Полное сканирование/хэширование
С4 20 000 1000 706 Индексный/вложенные циклы
D3 2 000 100 706 Полное сканирование/хэширование
CS 12 000 600 282 Индексный/вложенные циклы
M 600 000 30 000 2 820 Индексный/вложенные циклы
Al 30 000 000 1 500 000 1410 Индексный/вложенные циклы
BI 100 000 5 000 564 Индексный/вложенные циклы
Cl 10 000 500 28 Индексный/вложенные циклы
В2 100 000 5 000 3 Индексный/вложенные циклы

Обратите внимание, что замена соединений методом вложенных циклов на соединения хэшированием, как показано в таблице, устраняет необходимость
Решение для задачи из главы 7

307

(по крайней мере, в этом запросе) использовать индексы по внешним ключам для ВЗ и А2 и индексы по первичным ключам для С2, D2, Dl и D3.

Решение для задачи из главы 7

Глава 7 включает одну достаточно сложную задачу, позволяющую использовать большинство правил для подзапросов. В этом разделе вы найдете детальное пошаговое решение этой задачи. На рис. А.9 показаны отсутствующие коэффициенты для трех полусоединений и антисоединения.

D20.5 D3

I 1

BI 08 В2

Рис. А.9. Диаграмма с рис. 7.36 с указанными отсутствующими коэффициентами подзапросов

Я начну с объяснения вычислений отсутствующих коэффициентов, показанных на рис. А.9. Чтобы найти корреляционный коэффициент предпочтения для полусоединения с Dl, просто выполните правила, перечисленные в главе 7, в разделе «Диаграммное изображение подзапросов EXISTS». На первом шаге мы находим, что детальный коэффициент соединения для Dl, исходя из рис. 7.36, равен D = 0,8. Это редкий случай соединения «многие к одному», когда одной главной строке соответствует в среднем менее одной детализированной строки. Предположим, что M - 1. Это обычное значение главного коэффициента соединения для случая, когда он явно не показан на диаграмме. Лучший коэффициент фильтрации среди узлов в этом подзапросе (D1, SI и S2) равен 0,3 для Dl, поэтому S = 0,3. Лучший коэффициент фильтрации срезу узлов внешнего запроса (М, Al, А2, BI и В2) равен 0,2 для Al, поэтому R = 0,2. На втором шаге правила находим DxS = 0,24, а M х R = 0,2, поэтому D х S > M х R. Следовательно, нужно перейти к шагу 3. Мы находим, что S > R, поэтому корреляционный коэффициент предпочтения равен S/R = 1,5; записываем его рядом с указателем полусоединения E от M к Dl.

Чтобы найти корреляционный коэффициент предпочтения для полусоединения с D2, повторяем процесс. На первом шаге находим детальный коэффициент соединения на рис. 7.36 (D = 10). Предполагаем, что M = I, обычный главный коэффициент соединения, когда он явно не указан на диаграмме. Лучший коэффициент фильтрации между D2 и S3 равен 0,0005 для S3, поэтому S = 0,0005. Лучший
308

Приложение А. Решения задач

коэффициент фильтрации среди узлов внешнего запроса, как и раньше, равен R = 0,2. На втором шаге правил находим DxS = 0,005, a M х R - 0,2, поэтому D х S < M х R. Следовательно, вычисления завершаются на шаге 2, и корреляционный коэффициент предпочтения равен (D х S)/(M х R) = 0,025; записываем его рядом с указателем полусоединения E от M к D2.

Чтобы найти корреляционный коэффициент предпочтения для полусоединения с D4, повторим процесс. На первом шаге находим детальный коэффициент соединения на рис. 7.36 (D - 2). Предполагаем, что M - 1, обычный главный коэффициент соединения, когда он явно не указан на диаграмме. Лучший коэффициент фильтрации среди D4, S4, S5, S6 и S7 равен 0,001 для D4, поэтому S - 0,001. Лучший коэффициент фильтрации среди узлов внешнего запроса, как и раньше, равен R = 0,2. На втором шаге находим DxS = 0,002, a M х R = 0,2, поэтому D х S < M х R. Следовательно, вычисления завершаются на шаге 2, и корреляционный коэффициент предпочтения равен (D х S)/(M х R) = 0,01; записываем его рядом с указателем полусоединения E от И к D4.
Предыдущая << 1 .. 144 145 146 147 148 149 < 150 > 151 152 153 154 155 156 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100