цесора і операції введення-виведення для різних методів доступу до даних і операцій над ними. Вартість роботи процесора оцінюється в мілісекундах. Вартість введення-виведення, яка являє собою кількість операцій введення-виведення в секунду, також перетвориться в мілісекунди. Такий підхід дозволяє проводити порівняння навантаження на процесор і підсистему введення-виведення. Продуктивність методів доступу до даних і операцій об'єднання залежить від розміру і розподілу даних. Інформація про дані представлена ​​у вигляді статистики таблиць та індексів. Запит розбивається на ряд невеликих індивідуальних кроків. Найменший крок - це доступ до даних однієї таблиці, який вибирається з усіх можливих методів доступу. При цьому досліджуються всі можливості вибору даних з таблиці, а також методи об'єднання між будь-якими двома таблицями або таблицею і проміжним результатом. Оптимізатор вибирає найбільш простий і ефективний план виконання. p align="justify"> У реальній обстановці оптимізатор вибирає план виконання запиту на основі обчислення витрат на виконання цілого ряду операцій, які крім простого використання процесора і підсистеми введення-виведення включають такі чинники:
операції порівняння;
переміщення даних;
повторний доступ до тієї ж таблиці;
методи об'єднання даних;
використання буферів введення/виводу;
розподілення предикатів.
Також існують методи вибору плану виконання, засновані на аналізі синтаксису запиту або жорстко встановлених правилах вибору.
.4 Практика написання ефективних SQL-запитів
Незважаючи на те що існуючі оптимізатори сучасних СУБД досить добре справляються зі своїм завданням і продовжують удосконалюватися, це зовсім не означає що програмісту, що пише запити до бази даних, не потрібно замислюватися про ефективність цих запитів. Це особливо важливо в тому випадку, якщо база даних вельми об'ємна. У цій главі буде подано короткий перелік рекомендацій з написання ефективних SQL-запитів. Вважається, що найбільш відчутний вплив на продуктивність надають умови вибірки та оператори сортування та угруповання. Про них і піде мова в цій главі. p align="justify"> Оптимізація умов
Написання запитів до нетривіально спроектованої базі даних, в більшості випадків, вимагає використання в предиката кількох умов, об'єднаних логічними операціями кон'юнкції або диз'юнкції.
Не останню роль у питанні оптимізації грає порядок проходження умов, об'єднаних операторами AND та OR. Розглянемо вираз: A OR B OR C, де A, B і C - деякі умови. Очевидно, що вираз в цілому буде істинно, якщо хоча б одна умова буде істинним....