Метод оптимизации, основанный на синтаксисе
Методы оптимизации
Существуют два принципиально разных подхода к оптимизации запро-сов. Если оптимизатор основывается только на информации о механизмах реализации путей доступа, то метод оптимизации основан на синтаксисе (на правилах, RULE). Если же помимо этого используется статистическая информация о распределении данных, то это метод оптимизации, основанный на стоимости (на издержках, COST). Рассмотрим эти подходы подробнее.
При использовании этого метода план составляется на основании существующих путей доступа и их рангов. Все пути доступа ранжируются на основании знаний о правилах и последовательности осуществления этих путей. В табл. 7.1 в качестве примера приведены ранги путей доступа для СУБД Oracle8.
Таблица 7.1. Ранги путей доступа для СУБД Oracle8
Ранг | Пути доступа |
Одна строка по ROWID* | |
Одна строка по кластерному соединению | |
Одна строка по хеш-кластеру с уникальным или первичным ключом | |
Одна строка по уникальному или первичному ключу | |
Кластерное соединение | |
Ключ хеш-кластера | |
Ключ индексного кластера | |
Составной индекс | |
Индекс по одиночному столбцу (по условию равенства) | |
Индексный поиск по закрытому интервалу | |
Индексный поиск по открытому интервалу | |
Сортировка-объединение | |
MAX и MIN по индексированному столбцу | |
ORDER BY по индексированному столбцу | |
Полный просмотр таблицы |
* ROWID (идентификатор строки, КБД) – значение, которое может быть однозначно преоб-разовано в физический адрес записи.
Ранг пути доступа определяется на основании знаний о последовательности реализации этого пути. Например, самый быстрый способ доступа – это чтение по КБД: если он известен, то это одно физическое чтение. А поиск конкретного значения через индекс (ранг 9) обычно занимает меньше времени, чем поиск в закрытом интервале значений (ранг 10).
Метод оптимизации по синтаксису учитывает ранги путей доступа. Если для какой-либо таблицы существует более одного пути доступа, то выбирается тот путь, чей ранг выше, т.к. при прочих равных условиях он выполняется быстрее, чем путь с более низким рангом (рис. 7.2).
Рис.7.2. Построение плана выполнения запроса в методе оптимизации по синтаксису
План выполнения запроса в методе оптимизации по синтаксису формируется из выбранных путей доступа с максимальными рангами.