Я запускаю инструкцию SQL дважды, в том числе «Фактический план выполнения». Однако у меня есть два разных плана выполнения для одного и того же запроса. Единственное отличие заключается в том, что я меняю ID.Зависит ли план выполнения от данных?
- Во-первых, я запускаю sql с идентификатором, который относится только к 5 записям.
- Во-вторых, я запускаю sql с идентификатором, который связан с 5000+ записей.
Выполняется ли изменение плана выполнения в зависимости от данных?
Я использую SQL Server 2008 R2
*** ДА! *** Конечно! SQL Server будет анализировать количество строк, участвующих в вашем запросе, и в зависимости от количества строк он может выбрать тот или иной план выполнения как можно более оптимальный для всех случаев. –
Посмотрите на планы выполнения, которые были сгенерированы - вы следует заметить, что каждый узел показывает «приблизительное количество строк», а также фактическое количество строк - что вы думаете об этом? –
Вы можете получить экземпляры, когда используется один и тот же план выполнения, это очень плохая вещь, называемая параметром Sniffing. Это в основном оптимизатор, запутавшийся и может привести к действительно низкой производительности. Есть много ресурсов на google по этому вопросу, если вы заинтересованы. –