在linq到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
。这在第一次运行和连续运行时也很慢。 - 我尝试使用
select [some] [select] [clauses] from functionname(123456789)
的形式查询“unwrapped”。这仍然是缓慢的,也是连续运行。 - 我用alter function [...]重新定义函数。
- 运行原始sp_execute查询仍然很慢,也在运行时执行。
- 运行解包功能很快。真的很快。
- 运行原始的sp_execute查询现在真的太快了。还有不同的@ p0参数。
- 查询在应用程序中运行。我们又变得缓慢了。
我完全和完全沮丧,为什么会发生这种情况,以及我如何补救它。这感觉就像它与缓存的执行计划或类似的东西有关,但我不知道如何确切知道发生了什么 - 或者如何补救。有谁知道发生了什么?
都是可能的字段建立索引?你在晚上运行索引重建和统计更新作业吗? – m4ngl3r
如果连续运行速度很慢,可能不是由于编译和缓存执行计划。 –
索引呢? – m4ngl3r