Как уже было сказано, просмотр плана выполнения даст вам некоторую информацию. Однако, если вы не используете функцию стабильности плана, вы не можете полагаться на то, что план выполнения всегда остается неизменным.
В случае отправленного вами запроса не похоже, что порядок оценки каким-либо образом изменит логику, поэтому я предполагаю, что вы думаете об эффективности. Весьма вероятно, что оптимизатор Oracle выберет эффективный план.
Если вы хотите сравнить производительность с базовым запросом, вы можете использовать уловки, чтобы стимулировать определенный порядок. Скажем, например, что вы хотите, чтобы сначала выполнялось условие отметки времени. Вы могли сделать это:
WITH subset AS
( SELECT /*+ materialize */
FROM my_table
WHERE CURRENT_TIMESTAMP - 1 < x.CREATION_TIMESTAMP
)
SELECT *
FROM subset
WHERE
d.attribute3 = 'abcd*'
AND x.STATUS != 'P'
AND x.STATUS != 'J'
AND x.STATUS != 'X'
AND x.STATUS != 'S'
AND x.STATUS != 'D'
Подсказка «материализовать» должна заставить оптимизатор сначала выполнить встроенный запрос, а затем просканировать этот набор результатов на предмет других условий.
Я не советую вам делать это в качестве общей привычки. В большинстве случаев простое написание простого запроса приводит к лучшим планам выполнения.
person
Dave Costa
schedule
04.12.2008