Linq结果集性能的疑问

如代码1,先把数据ToList()到结果集中,然后再用sum函数。这样不会产生对数据表的sum聚合算法,而是在结果集中sum.这样是不是比代码2直接在数据库中sum性能要好呢?

 

代码1

var query = (from x in db.Course
                 select x.Score).ToList();           
  
int  sum = (decimal)query.Sum();

 

代码2

var query = from x in db.Course
                             select x.Score;           
  
int  sum = (decimal)query.Sum();


慕的地8271018
浏览 537回答 2
2回答

天涯尽头无女友

在数据库中count完再出结果肯定是比把结果都select出来再在内存中count要快(想象一下你有10000条数据,网路传输和内存占用消耗),如果你只需要一个count结果,那肯定是在数据库中执行再获取结果的。如果你除了count数,还需要对这些数据做一些操作(比如读取,更新等等),那肯定是先都select出来再count。

千巷猫影

第一种写法把数据全部选出来了再计算,第二种是在数据库中计算,所以第二种性能好一些。
打开App,查看更多内容
随时随地看视频慕课网APP