Друзья, всем привет! 👋🏻 На связи Паша, ваш куратор и специалист в мире Oracle. В понедельник мы предложили вам подумать, как оптимизатор Oracle воспринимает конструкцию WITH, и как мы можем этим управлять. Сегодня поделимся нашим мнением и примерами. Итак, поехали 🤞🏻 📌 Для чего нужен WITH ❓ В Oracle WITH — прежде всего способ "разрезать" запрос на несколько слоёв. Cам по себе CTE не гарантирует, что подзапрос выполнится один раз и результат сохранится в Temp. ⚙️ 1. CTE в плане запроса Оптимизатор при работе с CTE может: • "раскрыть скобки" (inline) — подставить тело CTE в основном запросе; • материализовать — выполнить подзапрос один раз, сохранить промежуточный результат и использовать его. При выполнении запроса оптимизатор отталкивается от актуальной статистики. Поэтому в одном случае дешевле может быть материализовать результат запроса, а в другом — раскрыть скобки. ⚠️ Важно: Если CTE материализован, в плане запроса Вы увидите шаг VIEW/TEMP TABLE TRANSFORMATION. 🤔 2