如何加快查询速度

时间:2011-09-07 14:57:38

标签: linq linq-to-entities

var ci = ctx.CI().Where(p => p.PId == pId);

var result = ctx.RM().Where(p => p.R.D.PId == Id && p.MTId == mt.Id).
Sum(p => (((p.M.TN * p.EC * p.F.PW * 52m) + (p.M.TN * p.EC * p.F.PY * (WW / 52m)))
/ 100m) * ci.FirstOrDefault(q => q.PId == p.R.PId.Value && q.FPId == p.R.FPId.Value).Factor);

8000条记录。查询需要2000ms来加载这样做,4000使用CI和RM上的连接。

如您所见,使用了6个表。 CC,RM,R,D,F和M.

模型是使用CodeFirst定义的,所以我使用的是EF 4.1。

如何加快查询速度,使其运行速度超过2秒?

2 个答案:

答案 0 :(得分:3)

对于像这样的复杂查询,我猜测很多时间都花在编译查询上。尝试使用CompiledQuery允许您重用预编译的查询。

除此之外,您还需要分析生成的SQL,以查看执行计划中花费的时间。通过一些有良好位置的指数,您可以显着提高性能。

答案 1 :(得分:0)

使用存储过程,并将ef绑定到它的函数。