Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL_in_action.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
345.09 Кб
Скачать

5. Минимизируйте число просмотров таблиц

Запросы с меньшим числом просмотров таблиц - более быстрые запросы. Вот пример. Таблица STUDENT содержит четыре столбца с именами NAME, STATUS, PARENT_INCOME и SELF_INCOME. Имя является первичным ключом. Значение статус равно 0 для обучающихся по бюджету студентов и 1 - для контрактников. Форма запроса предполагает два просмотра таблицы STUDENT:

Select name, parent_income

From student

Where status = 1

Union

Select name, self_income

From student

Where status = 0

Тот же самый результат будет получен при выполнении запроса с одним просмотром таблицы:

Select name, parent_income * status + self_income * (1 - status)

From student

6. Избыточность полезна

Помещайте в раздел WHERE как можно больше информации. Например, если указан раздел

Where col1 = col2 and col1 = 10,

оптимизатор сможет вывести, что COL2 = 10.

Но при задании раздела в форме

Where col1 = col2 and col2 = col3,

оптимизатор не будет считать, что COL1 = COL3.

7. Где возможно, избегайте использования соединений

Пример. Найти всех сотрудников некоторой организации

Select lname, fname

from Persons, Companies

Where Persons.company=Companies.Company_id

And Company.name="Sony"

При условии: Persons - N (1000) строк, Companies -M (100) строк потребуется проверка N*M строк (1 000 000)

Select lname, fname from Persons, Companies

Where Persons.company in

(Select company_id from Companies

where Company.name="Sony"

потребует проверки N+M строк (1100).

8. Если это неизбежно, соединяйте таблицы в правильном порядке

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

9. Старайтесь писать как можно более простые и «тупые» операторы sql

Оптимизатор может не справиться со слишком сложными операторами SQL; иногда написание нескольких более простых операторов позволяет добиться лучшей эффективности, чем задание одного сложного оператора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]