回答

收藏

优化LINQ查询-如何缩短执行时间?

技术问答 技术问答 194 人阅读 | 0 人回复 | 2023-09-12

我想知道是否有一种优化我LINQ查询的好方法。我正在使用类似以下内容的方法LINQ从数据库中查询数据:
7 t# }. @$ f- Q0 b# F$ ~! J0 w8 L# e// PKs is a list of integers   var import = context.table.Where(x => PKs.Contains(x.PrimaryKey)).AsEnumerable();假设(错误)这将导致如下所示SQL调用:4 s5 n" @$ U/ F$ c3 z
SELECT * from table where PrimaryKey in (PK[1],PK[2],...)即1数据库命中。使用Glimpse检查SQL调用,我看到了LINQ许多单独的查询被转换为许多单独的查询SQL例如:
8 W8 {+ y) t% JSELECT * from table where PrimaryKey=PK[1]SELECT * from table where PrimaryKey=PK[2]...单个查询的执行速度很快,但由于我的整数列表很大(以千计),查询操作需要25秒左右,因为费用的偏移。9 y$ f' D6 O4 Z- l+ A4 J
我决定通过数据库调用消除耗时的时间LINQ通过存储过程调用导入数据进行查询:2 k4 M! K3 c4 R" b  a* C
var import = this.p_import(parameter).ToList();响应时间一个数据库调用,响应时间从25秒缩短到不到1秒,大大缩短了响应时间。
5 C  B! }$ g" ]) G8 a8 c这解决了我的问题,但我用了LINQ全部目的是避免使用存储过程。有没有更好的优化我的方法?LINQ查询?
& b- q0 K& h$ C                                                               
  `2 m3 \; g+ B+ A6 D) A( b    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则