IEnumerable和IQueryable在使用时的区别-阿里云开发者社区

开发者社区> 数据库> 正文

IEnumerable和IQueryable在使用时的区别

简介: 最近在调研数据库查询时因使用IEnumerable进行Linq to entity的操作,造成数据库访问缓慢。此文讲述的便是IEnumerable和IQueryable的区别。 微软对IEnumerable的定义使用场景为Linq to Object,也就是涉及到内存操作时使用。

最近在调研数据库查询时因使用IEnumerable进行Linq to entity的操作,造成数据库访问缓慢。此文讲述的便是IEnumerable和IQueryable的区别。

微软对IEnumerable的定义使用场景为Linq to Object,也就是涉及到内存操作时使用。而对IQueryable的定义使用场景为Linq to SQL(Entity)。

因此,在执行Linq to SQL(Entity)的操作时,如果使用IEnumerable则会造成全表查询。如下图Code:

    

 

  如此,在SQL Profile监测到的执行语句为两次全表查询。

    

    

   然而,当我们正确使用IQueryable或者var时,如下图Code:

    

  得到的查询语句为:

    

 

为了一探IEnumerabel和IQueryable在实际工作中的程序执行效率,总结来下图的时间对比:

  

在这张图上看到的时间单位虽然为毫秒,但这是代码同步执行语句的查询时间,但多个客户端同时访问数据库时,此时造成的数据访问速度就不再是毫秒了。

 

墨匠

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章