Предположим, что существует приложение C ++, выполняющее определенный c SQL запрос к Oracle базе данных.
Этот запрос работал нормально последние пару лет в производственной среде в среде клиента, но внезапно в один прекрасный день запрос стал выполняться примерно в 10 раз больше. (Предположим, что в таблицы, с которыми работает этот запрос, постоянно добавляются данные).
При проведении анализа эксперты обнаружили, что оптимизатор Oracle не генерирует оптимальный план из-за возможных причин, связанных со статистикой БД / перекосом данных / всеми другими параметрами, которые могут повлиять на оптимизатор для создания неоптимального плана.
Принудительное использование оптимизатора путем размещения подсказок в запросе для создания хорошего плана выполнения работает отлично.
Команда разработчиков приложений теперь находится под давлением, чтобы изменить код приложения и внедрить подсказка в запросе при его создании.
Команда разработчиков приложений не хочет изменять код приложения , потому что у них есть сотни других клиентов, которые не жалуются на эту спецификацию c производительность запроса. Изменение кода приложения также означает увеличение затрат на обслуживание, поскольку им потребуется механизм для отключения подсказки, если подсказка больше не нужна, когда клиент обновляет базу данных до более новой версии.
Данный клиент не желает нанять администратора базы данных , который может выполнить команду SQL для настройки запроса с использованием функции базового плана.
Какие варианты действий у команды разработчиков приложений в этом случае?