EF架构~在ef中支持IQueryable级别的Contains被翻译成了Exists,性能可以接受!

简介:

Entityframeworks很聪明

不错,非常不错!ef里的contains比linq to sql里的contains有了明显的提升,事实上,是在进行SQL语句翻译上有所提升,在linq to sql里不支持iqueryable的contains集合,它只支持本地集合进行contains,而本地集合的contains会被.net翻译成sql语句是where in (...),即集合有多个元素,在in里就会被列举多少次,这个在性能上是非常低下的,不提倡的,而且它还有长度限制,最多本地集合在linq to sql里是2000多个元素。

ef在这点上表示不错,它为了防止你使用低下的查询,它杜绝你在linq语句中去ToList()对象,这是不错的选择,对于EF中的contains的用法,我们一般是分两步,第一查询出要列举的结果集,但不要ToList(),第二是使用contains语句,当EF把它发到SQL端时,这个语句被翻译成了exist,我们知道,这种查询的性能一定是比where in强的,不说SQL本身就说网络传输,它也一定比前者省了不少,呵呵。

Entityframeworks中正确使用Contains语句的Demo

错误的
   var linq = (from data1 in GetUser().Where(i => i.UserID <= 50) select data1.UserID).ToList();

   var linq2 = GetUser_StudyRecord().Where(i => linq.Contains(i.UserID.Value)).ToList();
SQL语句截图

正确的
 var linq = (from data1 in GetUser().Where(i => i.UserID <= 50) select data1.UserID);//IQueryable<int>,一个查询计划

 var linq2 = GetUser_StudyRecord().Where(i => linq.Contains(i.UserID.Value)).ToList();
SQL语句截图

怎么样,看了截图,不说,你也知道哪个性能好了吧,呵呵!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:EF架构~在ef中支持IQueryable级别的Contains被翻译成了Exists,性能可以接受!,如需转载请自行联系原博主。

目录
相关文章
|
5月前
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
265 0
|
1月前
|
消息中间件 存储 缓存
性能基础之大型网站技术架构模式
【2月更文挑战第15天】性能基础之大型网站技术架构模式
69 3
性能基础之大型网站技术架构模式
|
3月前
|
机器学习/深度学习 人工智能 并行计算
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
|
11月前
|
SQL 机器学习/深度学习 分布式计算
「大数据架构」Spark 3.0发布,重大变化,性能提升18倍
「大数据架构」Spark 3.0发布,重大变化,性能提升18倍
|
6月前
|
负载均衡 安全 微服务
服务网格和性能优化:介绍如何通过服务网格提高微服务架构的性能和可扩展性
服务网格和性能优化:介绍如何通过服务网格提高微服务架构的性能和可扩展性
57 0
|
7月前
|
架构师 关系型数据库 MySQL
掘金百万赞强制下架!MySQL性能与架构笔记,涵盖基础-优化-架构
今天给大家带来的是:简朝阳老师著的 《MySQL性能调优与架构设计》,本书是付宝架构师冯大辉、淘宝席DBA陈吉平、席DBA冯春培、网易级DBA翟振兴、搜狐级DBA叶金荣、百度级DBA吴诗展等6位数据库专作序推荐。   初级DBA到LAMP架构设计师利器。   剖析性能可用MySQL调优方,探索低本数据库系统构建之道。
|
8月前
|
数据库
国产架构完整性、可代替性和性能需要提高呀
数据库、设计软件是我们的短板,企业建构需要核心技术,国产生态需要努力
|
10月前
|
存储 SQL 数据处理
同步还是异步?ETL架构的选择,为何关系到数据处理速度和系统性能
同步还是异步?ETL架构的选择,为何关系到数据处理速度和系统性能
101 0
|
10月前
带你读《阿里云卓越架构白皮书》——1、架构设计(1)
带你读《阿里云卓越架构白皮书》——1、架构设计(1)
333 0
|
10月前
带你读《阿里云卓越架构白皮书》——1、架构设计(2)
带你读《阿里云卓越架构白皮书》——1、架构设计(2)
487 0