Корпоративные базы данных - статьи




Оптимизация и выбор плана выполнения запроса



Оптимизация выполнения SQL запросов и модули поддержки подобной оптимизации
(оптимизаторы или optimizers) играют крайне важную роль в реляционных СУБД. SQL запросы
определяют какие данные необходимо передать пользователю, но не говорят РСУБД о том, как
этот запрос обработать эффективно. Обычно существует большое количество возможностей
выполнения запроса. Оптимизаторы серверов баз данных отвечают за выбор наилучшей стратегии
выполнения. Поэтому скорость выполнения запросов в ведущей степени зависит от качества
оптимизатора данной РСУБД.

Результатом работы оптимизатора SQLBase является план выполнения запроса (execution plan).
Говоря упрощенно, execution plan - это последовательность шагов, которая указывает программе
серверу SQLBase, как выполнить запрос. В плане каждый шаг может быть однотабличным (single
table) или двухтабличным (two table). Все шаги производят результирующие таблицы (result tables).
Результирующая таблица не обязательно должна иметь материальное воплощение в виде
физического объекта. Для любого шага плана результирующая таблица может быть
пользовательской (user-defined), временной (temporary) или концептуальной (conceptual).

Однотабличный шаг плана


Однотабличный шаг плана выполнения запроса определяет исходную таблицу, метод доступа к
данным, используемый для извлечения строк таблицы, и имя результирующей таблицы (чаще
всего, концептуальной). В настоящее время SQLBase поддерживает следующие методы доступа к
данным:


  • Последовательное сканирование (Sequential Scan) - Это наиболее простой
    из всех методов доступа. В этом считывается методе каждая страница данных,
    принадлежащая исходной таблице. (Следует отметить, что все страницы базы
    данных для данной таблицы связаны между собой, поэтому не требуется
    сканирование всего файла базы данных).
  • Доступ по индексу (Index Access) - Существуют два способа использования
    индекса. При первом, значение индекса известно, и индекс может быть
    использован для позиционирования на индексной странице БД и последующего



    Содержание  Назад  Вперед