Друзья, всем привет! 👋 Хотим поделиться с вами кейсом нашего ученика и давнего подписчика Олега. Ему слово. Есть запрос, построенный на двух view. Он долго отрабатывал из-за неверного типа соединения, я добавил хинты, стало лучше. Но.. • первый запуск - 6 минут ⏳ • второй запуск - уже 12 секунд 🚀 🕵️♂️ Что происходит? Залез в v$sql_shared_cursor и увидел несколько child-курсоров. Разница - в планах выполнения и флаге USE_FEEDBACK_STATS. В «быстром» плане было примечание: cardinality feedback used. 📊 Что за Cardinality Feedback❓ Если коротко, это механизм, с помощью которого оптимизатор Oracle буквально «учится на своих ошибках»: при выполнении запроса он сравнивает estimate rows, вычисленное на основе доступной статистики, с actual rows. Если разница существенна, Oracle фиксирует этот промах, и при следующем запуске этого же запроса опирается уже на фактические цифры из прошлого выполнения. Это позволяет ему на лету корректировать свои ожидания и выбирать более оптимальный п