В Аксапте можно использовать хинты (подсказки) для sql-сервера. Вадим Гончаренко рассказывает о использовании эти хинтов.

Вадим Гончаренко, vgoncharenko@rabota-na-rezultat.ru

IndexHints.zip (5Kb, проект и таблица с результатами, для загрузки требуется регистрация на форуме у Mazzy)

Index hints и MSSQL

Здесь я уже показывал, как с помощью хинтов (англ. hint – подсказка, намек) можно влиять на формируемый запрос из кода X++. В этой статье я систематизировал то, что удалось выяснить экспериментальным путем.

Любой отсылаемый на SQL сервер запрос может содержать в себе те или иные хинты, влияющие на его выполнение. То, какие хинты будут использованы, зависит:

В действительности эти параметры зависят друг от друга: так, например, настройки ядра могут управлять тем, будут ли применяться конкретные хинты, используемые разработчиком в коде или нет.

С хинтами в X ++ все относительно просто: они задокументированы в руководстве разработчика. А вот поведение ядра при формировании запроса, как правило, понять довольно сложно. Тем не менее, на него можно влиять, используя параметр Hint flags конфигурационный утилиты. Это целое число со значениями от 0 до 255, вычисляемое сложением следующих параметров:

Проведенное расследование показало, что по умолчанию для Microsoft SQL Server 2000 включены не совсем те параметры, которые указаны в документации. Так, параметр HINT_FIRSTONLY явно выключен, а HINT_FORCE_NESTED_LOOP – включен, хотя в документации утверждается обратное. Ошибка ли это документации или что-то изменилось в ядре с версии 2.5, неизвестно.

К статье приложен архив с проектом (одна таблица и job) используемым при тестировании, а также таблица с его результатами. Для загрузки требуется регистрация на форуме у Mazzy.

Желающие получить более подробную информацию могут обратиться к документу Performance Enhancements Using the Cost-Based Optimizer.

 

Вадим Гончаренко, vgoncharenko@rabota-na-rezultat.ru