Я долго искал и до сих пор не нашел ответа на свою проблему.
Наш Dynamics AX генерирует запросы с опцией подсказки запроса (FAST x), которая иногда вынуждает использовать неверный план выполнения. Разработчики говорят, что это по умолчанию, и его трудно изменить (возможно, должно быть исправлено во всех формах).
Так что я нашел способ переопределить эти подсказки, используя флаги трассировки. Я обнаружил прекрасный флаг трассировки 8722, который, как утверждается, заставляет SQL Server игнорировать некоторые подсказки запроса, особенно те, которые содержатся в предложении OPTION.
Тем не менее, это не работает в моем случае. Я также попытался включить флаг трассировки 8602 (отключить подсказки индекса), но мой запрос все еще выполняется с подсказкой FAST x (это намного медленнее, чем когда я фактически удаляю предложение OPTION).
Я также попытался очистить кэш плана, но безрезультатно.
Любые идеи? Я что-то пропустил?
PS Я включил флаги трассировки глобально, это выпуск SQL Server 2012 для разработчиков
источник
Ответы:
Насколько я знаю, флаги трассировки 8722, 8755 и 8602 никогда официально не документировались. В последний раз я помню, как они были эффективными, в SQL Server 2000, поэтому неудивительно, что они игнорируются в SQL Server 2012.
Для определенных шаблонов запросов часто можно удалить
FAST n
подсказку с помощью направляющих плана. Тем не менее, лучшим решением будет заставить разработчиков AX исправить это на стороне приложения.источник