У меня странные несоответствия в скорости запросов с помощью функций linq to sql. У меня есть функция, которую я вызываю из приложения MVC. Это всегда очень медленно, в порядке 7 секунд. Когда я вызываю ту же функцию из студии управления SQL, она иногда медленная, а иногда и быстрая (доля секунды). Я не уверен, когда он становится медленным, и когда он становится быстрым точно, но я нашел один цикл (за исключением того, что приложение MVC всегда было медленным), что дает согласованные результаты.Непоследовательная скорость запросов между LINQ и (иногда) SQL
- Запрос выполняется в приложении. Это медленно.
- Я пробую запрос точно так же, как LINQ выполняет его. Это находится в форме
sp_execute N' select [some] [select] [clauses] from functionname(@p0)', 'declare @p0 decimal(9,0)', @p0=123456789
. Это также медленно, при первом запуске и в последовательных прогонах. - Я попробовал запрос "unwrapped" в форме
select [some] [select] [clauses] from functionname(123456789)
. Это все еще медленно, также на последовательных прогонах. - Я переопределяю функцию с помощью функции alter [...].
- Выполнение исходного запроса sp_execute по-прежнему медленное, также на censecutive.
- Эксплуатация развернутой функции выполняется быстро. Действительно быстро.
- Выполнение первоначального запроса sp_execute также очень быстро. Также с различными параметрами @ p0.
- запрос выполняется в приложении. мы снова становимся медленными.
Я полностью и полностью озадачен тем, почему это происходит, и как я могу исправить это. Похоже, что это имеет какое-то отношение к кэшированным планам исполнения или чем-то в этом роде, но я недостаточно знаю об этом, чтобы точно знать, что происходит, или как его исправить. Кто-нибудь знает, что происходит?
являются все возможные поля проиндексированы ? выполняете ли вы работу по восстановлению индекса и статистике в ночное время? – m4ngl3r
Если на последовательных прогонах он медленный, это, вероятно, не из-за составления и кэширования планов экзекуции. –
как насчет индексов? – m4ngl3r