2016-07-08 2 views
0

Я запускаю инструкцию SQL дважды, в том числе «Фактический план выполнения». Однако у меня есть два разных плана выполнения для одного и того же запроса. Единственное отличие заключается в том, что я меняю ID.Зависит ли план выполнения от данных?

  • Во-первых, я запускаю sql с идентификатором, который относится только к 5 записям.
  • Во-вторых, я запускаю sql с идентификатором, который связан с 5000+ записей.

Выполняется ли изменение плана выполнения в зависимости от данных?

Я использую SQL Server 2008 R2

+7

*** ДА! *** Конечно! SQL Server будет анализировать количество строк, участвующих в вашем запросе, и в зависимости от количества строк он может выбрать тот или иной план выполнения как можно более оптимальный для всех случаев. –

+2

Посмотрите на планы выполнения, которые были сгенерированы - вы следует заметить, что каждый узел показывает «приблизительное количество строк», а также фактическое количество строк - что вы думаете об этом? –

+0

Вы можете получить экземпляры, когда используется один и тот же план выполнения, это очень плохая вещь, называемая параметром Sniffing. Это в основном оптимизатор, запутавшийся и может привести к действительно низкой производительности. Есть много ресурсов на google по этому вопросу, если вы заинтересованы. –

ответ

-1

ли изменение плана выполнения в зависимости от данных?

Строго говоря, нет. План выполнения изменится, если изменяется запрос или изменяется статистика (которая зависит от данных).

Если данные изменяются, но статистика не указана, тогда ваш план выполнения останется неизменным.

+0

Не знаете, почему это было приостановлено. – MJH

Смежные вопросы