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




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


извлечения данных непосредственно из индексной страницы. При втором
способе индексные страницы сканируются в возрастающем или убывающем
порядке для поиска положения индекса. Если запрос включает колонки
таблицы, не входящие в индекс, потребуются дополнительные операции для
считывания информации из страниц данных таблицы.
  • Хэшированный доступ (Hash Access) - В этом методе ключевое значение
    используется для прямого извлечения информации из страницы данных,
    которая содержит строки, удовлетворяющие значению ключа. Метод
    преобразования ключа в адрес страницы, на которой он находится, носит
    название "хэширование". Хэшированный доступ может быть использован
    только в том случае, если для ключа создан хэшированный индекс и
    предикатом является равенство "=".

    Двухтабличный шаг плана


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


    • Вложенный цикл (Nested loop) и его вариации
    • Слияние индексов (Index merge)
    • Гибридное хэшированное объединение (Hybrid hashed join)

    Пример схемы выполнения

    В качестве примера рассмотрим базу данных типа поставщик-товар-поставка. База содержит 3
    таблицы: S для поставщика, P для товара и SP - для поставок. Таблица S имеет уникальный
    первичный ключ S#. Таблица P имеет уникальный первичный ключ P#. Таблица SP имеет
    уникальный первичный ключ на колонках S#P#. Дополнительно, эта таблица содержит индексы
    для колонок City, Color и Weight. Схема базы приведена на рис.5.

    Рис. 5. Схема демонстрационной базы данных

    Таблицы
    Колонки
    Индексы



    S
    S#, SName, Status, City
    SXS#(S#), SXCITY(City)
    P
    P#,
    PName, Color, Weight, City
    PXP#(P#),
    PXCOLOR(Color),
    PXWEIGHT(Weight)
    SP
    S#, P#, QTY
    SPXS#P#(S#,
    P#)

    Запрос 1: Select * from P where color = 'Red' and weight =19;



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