SomewhereSomehow's Notes

Фильтр по тегу: disable_parameter_sniffing


USE HINT и DISABLE_PARAMETER_SNIFFING

Прослушивание параметров — это прием оптимизации, который позволяет использовать значения параметров модуля (например, хранимой процедуры или функции), во время первого вызова, для оценки предполагаемого числа строк при построении плана.

Прослушивание параметров в большинстве случаев полезная вещь, но эта техника плохо работает если значения параметров сильно отличаются по селективности. Например, в случае если для одного значения параметра выбирается 99% строк таблицы, а для второго 1% — серверу может быть выгодно использовать разные планы. Один план будет более эффективен для большего числа строк, второй для меньшего.

Однако, если работает прослушивание параметров, план будет построен для того значения, что было передано при первом вызове. Если для этого значения выбирается небольшое число строк, будет построен план выгодный для получения небольшого числа строк. Когда значение параметра изменится так, что процедура должна будет вернуть гораздо больше строк, план останется «старым», эффективным для небольшого числа строк. Давайте рассмотрим простой пример, который иллюстрирует проблему.

Читать дальше...
добавлено: 17 фев 17 просмотры: 1465, комментарии: 0