Когда вы запускаете запрос в первый раз, Oracle создает план выполнения и кэширует этот план для дальнейшего использования.
Когда вы добавляете произвольный комментарий, фактически вы запускаете другой запрос, и, таким образом, Oracle оценивает новый план выполнения. В целом, этот план выполнения может отличаться от первого, хотя и маловероятно.
Я помню, что на тренинге тренер показал нам «секретный» намек Oracle /*+ RUN_FASTER */
- на самом деле запрос выполнялся намного быстрее! Хитрость заключалась в том, что для исходного запроса он сохранял подготовленный план выполнения (см. Использование плана стабильности ), заставляя полное сканирование таблицы . С подсказкой /*+ RUN_FASTER */
у вас есть новый запрос, и оптимизатор оценил новый лучший план.
На самом деле подсказки типа /*+ RUN_SLOWER */
или /*+ drink a cup of tea */
делают то же самое, но без удивления со стороны студентов. : -)
Однако эта история происходит несколько лет назад. Я полагаю, что в настоящее время оптимизатор Oracle работает умнее, а комментарии (если не действительные подсказки) игнорируются. Но я никогда не тестировал его с последними версиями Oracle.