Семантична оптимізація запитів СУБДСемантична оптимізація запитів СУБД - процес валідації та перетворення синтаксичного дерева запиту в форму, яка придатна для подальших кроків оптимізації. На цій стадії виконується:
Перетворення запитів до канонічної формиЗапити зводяться до канонічної форми, тобто переписуються так, щоб вони містили мінімальну кількість операторів SELECT (з'єднання-фільтрація-проєкція). Скрізь, де можливо, запит повинен бути зведений до форми єдиного оператора SELECT. Це може дозволити наступним фазам оптимізації згенерувати значно ефективніший (на 2-3 порядки) план виконання для складних запитів. Розкриття уявленьРозкриття уявлень застосовується для того, щоб підсумковий запит містив посилання тільки на матеріалізовані відносини (таблиці) і можливості використовувати конвеєрну обробку даних.
Перетворення підзапитів у сполукиПеретворення підзапитів у сполуки є необхідним для застосування конвеєрної обробки даних та мінімізації обсягу результатів підзапитів, акумульованих у тимчасовій дисковій чи оперативній пам'яті.
Спуск предикатів
Спрощення умов та розподіл предикатівСпрощення умовВиконується шляхом перетворення дерева логічних операцій у КНФ та спрощення отриманої логічної функції. Перетворення дерева логічних операцій у КНФ виконується наступним чином:
P OR (Q AND R) = (P OR Q) AND (P OR R) (P AND Q) OR R = (P OR R) AND (Q OR R)
NOT (P OR Q) = NOT P AND NOT Q Перетворення триває рекурсивно до тих пір, поки дерево не буде складатися із кон'юнкцій конституент 0. Отримана логічна функція знаходиться у кон’юнктивній нормальній формі, проте вона надлишкова. Для спрощення застосовують методи оптимізації логічних функцій, такі як Еспрессо (Логіка) або Куайна-Мак-Класкі. Розподіл предикатівРозподіл предикатів виконується
A.B pred C Для яких існує предикат A.B = D.E Як результат - отримаємо предикат D.B pred C де C - константа; A, D - відношення; B, E - порівнювані атрибути. Це спрощення виконується на основі припущення, що початковий предикат A.B pred C може бути ефективнішим для відношення D.
A.B pred D.E генерується обернена умова D.E inversed pred A.B для можливості виконати з'єднання в оберненому порядку. Перетворення дерева умов у шляху вибіркиПісля спрощення дерева умов кожна кон'юнкція у дереві - це шлях вибірки. Предикати всередині кон'юнкцій групуються за належністю відносин. Для отримання підсумкового результату необхідно об'єднати результати кожного зі шляхів вибірки. Література
Див. також
|
Portal di Ensiklopedia Dunia