Налаштування оптимізатора sql

З огляду на відмінності режимів оптимізатора різний і результат їх роботи, тому важливий вибір оптимізатора, який використовується за умовчанням. Як правило, загальноприйняті цілі настройки включають наступні завдання:

Файл InitOra - це настроювальний файл СУБД Oracle, який фактично являє собою звичайний текстовий файл в стандарті Windows, в який можна забратися блокнотом і підправити. Там багато-багато рядків з настройками в т.ч. є рядки і з настройками оптимізатора. Наприклад, там може бути вказана рядок типу:

Для продукционного оптимізатора дуже важлива редакція запиту, тобто текст запиту, тому таблиці в розділі Row треба вказувати в порядку убування числа обираних рядків. (Тобто першу треба писати таблицю, з якої більше рядків вибирається) Так правильно писати запит для продукційного оптимізатора. (Це для розділу Select.From);

(Розділ Select .Where) максимальне обмеження на вибірку рядків має стояти першим, якщо умови вибірки включають оператор «or», а якщо з'єднання оператора «and», то навпаки.

Оптимізатор не вміє міняти місцями таблиці, обмеження, тому йому краще відразу вказувати в правильному порядку.

Незважаючи на істотні нововведення в вартісної оптимізатор Oracle, у багатьох випадках продукційний оптимізатор вважається краще. По-перше, він з'явився з першою версією Oracle, а вартісної тільки з шостої. (Тобто багато поколінь людей вклали свій талант в цей оптимізатор).

Загальна стратегія настройки оптимізатора Oracle наступна:
1) до запитів, які з'єднують 3 або більше великих таблиці, слід застосовувати продукційний оптимізатор або (стоймостной) підказку First_rows.
2) Запити, які звертаються до бітових індексам, виграють при вартісному оптимізаторі.
3) Запити з використання підказок без звёздообразного запиту потребують вартісному оптимізаторі. (Звёздообразний запит - коли одна велика таблиця і багато маленьких у неї)

Схожі статті