44
Еще больше теории:
алгоритмы
Алгоритм считывает данные из индекса и применяет оставшиеся условия
фильтрации, если это необходимо. Обычно не нужно обращаться к таблич-
ным данным, но иногда необходимы дополнительные проверки – мы под-
робно рассмотрим эту тему в главе 5.
Стоимостная модель сканирования только индекса аналогична модели для
доступа к таблице на основе индекса, за исключением того, что не нужно об-
ращаться к данным таблицы. Для малых значений селективности стоимость
примерно пропорциональна количеству возвращаемых строк. При больших
значениях селективности алгоритм выполняет (почти) полный просмотр
индекса. Стоимость просмотра индекса обычно ниже, чем стоимость полного
просмотра таблицы, потому что индекс содержит меньше данных.
Сравнение алгоритмов доступа к данным
Выбор лучшего алгоритма доступа к данным в основном зависит от селек-
тивности запроса. Отношение стоимости к
селективности для различных
алгоритмов доступа к данным показано на рис. 3.2. Мы намеренно ограни-
чиваемся качественным сравнением; все числа на этом графике опущены,
поскольку они зависят от аппаратного обеспечения и размера таблицы.
Индексный доступ
Полное сканирование
Сканирование
только индекса
Стоимость
Селективность
Рис. 3.2
Связь стоимости и селективности запросов
для разных алгоритмов доступа к данным
Линия, соответствующая полному сканированию, прямая и почти гори-
зонтальная: ее рост происходит из-за генерации выходных строк. Как прави-
ло, стоимость генерации незначительна по сравнению с другими затратами
для этого алгоритма.
Линия, обозначающая стоимость доступа
к таблице на основе индекса,
начинается (почти) с нуля и быстро растет с ростом селективности. Рост
замедляется при больших значениях селективности, где стоимость этого
алгоритма
значительно выше, чем стоимость полного сканирования.
Самым интересным моментом является пересечение двух линий: для
меньших значений селективности предпочтительнее доступ на основе ин-
дексов, а полное сканирование лучше подходит для больших значений се-
Алгоритмы доступа к данным
45
лективности. Точное положение пересечения зависит от аппаратного обеспе-
чения и может зависеть от размера таблицы. Для относительно медленных
вращающихся дисков доступ на основе индексов предпочтительнее, только
если селективность не превышает 2–5 %. Для твердотельных накопителей
или виртуального окружения это значение может быть выше. На
старых
вращающихся дисках произвольный доступ к блокам может быть на порядок
медленнее последовательного доступа, поэтому дополнительные накладные
расходы на индексы при той же пропорции строк получаются выше.
Линия, соответствующая сканированию только индекса, располагается
в самой нижней части графика, а это означает, что предпочтительно исполь-
зовать этот алгоритм, если он применим (то есть все необходимые столбцы
находятся в индексе).
Оптимизатор запросов оценивает селективность запроса и селективность,
соответствующую точке пересечения для данной таблицы и данного индекса.
Условие фильтрации запроса, показанного в лис тинге 3.2, выбирает значи-
тельную часть таблицы.
Do'stlaringiz bilan baham: