Программирование >>  Полное сканирование таблицы 

1 ... 94 95 96 [ 97 ] 98 99 100 ... 107


просто добавить заглавную F к наиболее сильно фильтрованному узлу и строчную f к остальным фильтрованным узлам, добавляя звездочку к уникальному фильтру для узла В.

LOC f


0J5 ITX.f с

В F* IV f SPCT TRCT СТСТ

ITXR f

Рис. A.6. Решение для упражнения 6

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

Эта глава содержт только одну, исключительно сложную задачу. В этом разделе дано подробное пошаговое решение задачи.

На рис А.7 показано, как скорректировать эффективные фильтры, чтобы учесть коэффициенты соединения, меньшие 1,0, появляющиеся на рис. 6.33 в трех местах.


ОтЗУ

С1 0.1x0.1


С2 1x0.02x0.4 СЗ 0 2х0.02 С4 1x0.02 СБ 1x0.02

6-:4i D1 0.7x0.02x0.4

D2 0.7x0.02

D3 0.4x0.02

Рис. А.7. Эффективные фильтры, учитывающие коэффициенты соединения, для выбора ведущей таблицы

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



вверх при помощи явных условий IS NOT NULL для внещних ключей. Таким образом корректируются фильтры для таблиц В1, С1, С2 и 01, после чего нужно зачеркнуть главные коэффициенты соединения, чтоб показать, что они уже учтены. Обратите внимание на детальный коэффициент соединения, равный 0,02, между М и А1, при помощи которого можно достигнуть еще более существенной корректировки всех фильтров, находящихся ниже М в ветви А2.

ПРИМЕЧАНИЕ

Если бы существовали и другие ветви, то коэффициенты для них тоже были бы скорректированы. Корректировка не влияет только на ветвь А1. присоединенную через фильтрующее соединение.

Обратите внимание, что эффективные коэффициенты соединения для С2 и 01 корректируются дважды, так как на них влияют два фильтрующих соединения. Просмотрев все полученные числа, мы видим, что лучщий эффективный фильтр, равный 0,004 (0,2 х 0,02), принадлежит СЗ, поэтому она становрггся ведущей таблицей.

После того как ведущая таблица выбрана, вам нужно провести несколько новых корректировок, чтобы учесть два небольших главных коэффициента соединения перед тем, как выбирать порядок соединения. Обратите внимание, что вам больше не нужно учитывать детальный коэффициент соединения, так как база данных начинает обработку с той стороны соединения, где строки при помощи этого соединения не отбрасываются. Это происходит всегда, когда вы выбираете ведущую таблицу с эффективным фильтром, скорректированным с учетом детального коэффициента соединения. В каком-то смысле вы используете фильтр в самом начале, начиная с небольших таблиц, которые указывают только на поднабор строк главной таблицы (в данном случае А1) на противоположной стороне соединения.

Лучше использовать преимущества скрытых фильтров соединения, указывающих на С1 и 01 как можно раньше в плане исполнения. Следовательно, стоит сделать явными фильтры вида не равен null по внешним ключам (в В1 и С2), указывающим на эти фильтрующие соединения, как показано на рис. А.8. Если сделать эти фильтры явными, сами соединения больше не будут выполнять фильтрующую функцию, поэтому нужно вычеркнуть эти коэффициенты соединения.

Начиная с СЗ, соеданение можно вьшолнрггь только с ВЗ, поэтому ставим это соединение следующим в создаваемом порядке выполнения запроса. Теперь можно соединить с С2, С4 и С5 (вниз) или с А2 (вверх). В обычной ситуации вы выбрали бы только какое-то из соединений с таблицами из нижней части диаграммы. Но следует обратить внимание, что детальный коэффициент соединения с А2 равен 1,0, поэтому это соединение можно выполнять достаточно рано в порядке выполнения запроса. На самом деле, оказывается, что у него лучший эффективный фильтр среди всех возможных соединений, поэтому выполняем соединение с А2. Теперь в список допустимых узлов попадает узел М, но детальный коэффициент соединения с М слишком большой, поэтому используем это соединение как можно позже. Теперь единственный допустимый узел внизу, имеющий фильтр - это С2, благодаря ставшему теперь явным условию не null по внешнему ключу, указывающему на D1, следовательно, следующим присоединяем узел С2. Теперь порядок соединения- (СЗ, ВЗ. А2. С2).




D2 0.7

D3 0.4

Рис. А.8. Корректировка по превращению условия типа не равен пи11 по внешним ключам в явные, чтобы оптимизировать остаток порядка соединения

Соединение с С2 добавляет D1 и D2 в список допустимых узлов, находящихся ниже уже соединенных таблиц, и это единственные допустимые таблицы в этом направлении, имеющие фильтры, поэтому выберем одну из них. Коэффициенты фильтрации равны, следовательно, предстоит рассмотреть иные харшсгеристики. Можно заметить, что D2 должна быть меньше, так как приписанный ей детальный коэффициент намного больше. Таким образом, следуя правилу выбора меньшей таблицы, присоединяем D2 перед D1. Теперь порядок соединения - (СЗ. ВЗ. А2. С2. D2. D1).

Выбирая между С4 и С5, мы также сталкиваемся с одинаковыми коэффициентами фильтрации, равными 1,0, поэтому решаем проблему при помощи правила близости фильтров, которое благоприятствует узлу С4, так как он открывает доступ к фильтру для D3. После обработки С4 переходим к D3, чтобы использовать его фильтр, и, наконец, присоединяем не фильтрованный узел С5. Теперь порядок соединения - (СЗ. ВЗ. А2. С2. D2. D1. С4. D3. С5).

В данной ситуации у нас нет выбора, какой узел присоединять следующим, следует просто выбрать соединение вверх с М. После обработки М у нас опять не остается выбора, так как А1 - это единственный присоединенный к нему узел. После этого можно будет выбирать, присоединить далее В1 или В2. Их коэффициенты фильтрации практически равны с точки зрения поздних соединений, а детальные коэффициенты соединения одинаковы, следовательно, таблицы должны быть одного размера, поэтому этот фактор не поможет выбору. Также из рассмотрения можно выкинуть близость других фильтров, так как фильтр для С1 не лучше фильтра для В1. Поэтому необходимо выбрать следующее соединение с В1. Теперь порядок соединения - (СЗ. ВЗ. А2. С2. D2. D1. С4. D3. С5. М. А1. В1). На данный момент можно использовать оба оставшихся узла - В2 и С1. У В2 лучший фильтр, и комбинация главного и детального коэффициентов фильтрации для таблицы С1 показывает, что она должна быть в 10 раз меньше таблицы В1. В свою очередь, В1 такого же размера, как и В2, поэтому В2 и С1 на порядок различаются в размере, вероятно, достаточно для применения правила выбора меньшей таблицы. Следовательно,



1 ... 94 95 96 [ 97 ] 98 99 100 ... 107

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика