В процессе анализа запроса оптимизатор проверяет запрос на аргументы поиска, использование оператора or и существование критериев соединения - именно в этом порядке. Поскольку использование оператора or и существование критериев соединения не требуют объяснения, здесь обсуждаются только аргументы поиска.
Аргумент поиска является частью запроса, которая ограничивает промежуточный результирующий набор запроса. Основным назначением аргументов поиска является то, что они позволяют использовать существующие индексы применительно к конкретному выражению. Вот примеры аргументов поиска:
♦ emp_fname = 'Moser';
♦ salary >= 50000;
♦ emp_fname = 'Moser' and salary >= 50000.
Существует несколько форм выражений, которые не могут быть использованы оптимизатором в качестве аргументов поиска. К первой группе принадлежат выражения с оператором отрицания (not, о). Точно так же, если вы используете выражение в левой части оператора, существующее выражение не может быть использовано в качестве аргумента поиска.
Вот примеры выражений, которые не являются аргументами поиска:
♦ NOT IN ('dl', 'd2');
♦ emp_no <>- 9031;
♦ budget * 0.59 > 55000.
Основным недостатком выражений, которые не могут быть использованы в качестве аргументов поиска, является то, что оптимизатор не может использовать существующие индексы в отношении выражения, чтобы повысить производительность соответствующего запроса. Иными словами, в этом случае единственным способом доступа к данным может быть только последовательное сканирование таблицы.