in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
全文:
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的2:select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
参考链接
http://topic.csdn.net/u/20090715/10/ec21e6cc-7265-4c44-a35c-8a0003e73978.html
分享到:
相关推荐
log4j-99.0-does-not-exist.jar 处理logback和log4j的包冲突
开源库`check-files-exist`针对这一需求提供了一个解决方案,主要用于检查文件是否存在。这个库能够帮助开发者确保用户选定的文件路径或者选择器能够正确解析为实际的文件,避免因为文件缺失导致的错误或异常。 ...
标题和描述均聚焦于SQL语言中“IN”和“EXISTS”的区别,这是数据库查询语言中两种常用的子查询处理方式,它们在功能上虽然相似,但在执行效率、索引使用以及适用场景上存在显著差异。 ### IN关键字 “IN”主要...
NX二次开发UF_CFI_ask_file_exist 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业人士...
IN、EXISTS、NOT EXISTS、NOT IN 在 SQL 语句中的应用和区别 IN 语句和 EXISTS 语句都是 SQL 语句中用来判断是否存在某个值的语句,但是它们的实现机制和应用场景是不同的。 IN 语句是通过 hash 连接来实现的,它...
《Apache Commons Logging详解》 Apache Commons Logging,简称为Commons ...在当前的开发环境中,理解Commons Logging的原理和限制,以及如何与其他日志框架配合,对于提升Java应用的可维护性和扩展性至关重要。
【标题】"ABPV-master_equatorybi_exist6ru_android源码_androidstudio_android_" 提供的信息表明,这是一个关于Android应用开发的项目,名为ABPV,并且是master分支的代码。"equatorybi"可能是项目的一个特色功能...
在本文中,我们将深入探讨`Laravel开发-laravel-exist-db-client`这一项目,它是一个专为Laravel5设计的XML RPC客户端,用于与eXist数据库进行交互。eXist是一个开源、纯Java构建的XML数据库和XML应用程序服务器,而...
"Laravel开发-exist-db-rest-client"项目则聚焦于如何利用Laravel与exist-db进行交互,exist-db是一个开源的XML数据库,特别适合存储和处理结构化数据。这个项目提供了一个客户端,允许开发者通过REST API来查询和...
gulp存在的例子gulp-exist能实现什么? 尝试找出答案。 一个完全无蚂蚁的existdb应用程序构建。安装npx degit line-o/gulp-exist-example#main my-new-app你可以做的事假设您使用默认的admin帐户在localhost:8080上...
exist-ws-commons-util-1.0.2.jar,base64 加密解密 在 Java 中把 .NET 使用 Convert.ToBase64String 转换出的 Base64 还原
(1) 报错内容:Compiler arm-linux-gcc does not exist or cannot compile C; try another. (2)报错内容:ftpcmd.y:108: error: array type has incomplete element type 4、安装ftpd,将ftpd拷贝到/usr/sbin中,...
1. **获取项目**:首先,你需要下载或克隆`Not-exist-in-douban-master`压缩包,这通常通过Git工具完成。如果你不熟悉Git,也可以直接下载ZIP文件。 2. **理解项目结构**:解压后,你会看到一个包含`index.md`文件...
Blockchain Basics: A Non-Technical Introduction in 25 Steps By 作者: Daniel Drescher ISBN-10 书号: 1484226038 ISBN-13 书号: 9781484226032 Edition 版本: 1st ed. 出版日期: 2017-03-16 pages 页数: (276 ) ...
在使用Eclipse或MyEclipse等集成开发环境(IDE)时,可能会遇到“Some projects cannot be imported because they already exist in the workspace”的问题。这个错误提示表明,你试图导入的项目与当前工作空间...
ERROR Error: [@ant-design/icons-angular]: the icon redo-o does not exist or is not registered. at IconNotFoundError (ant-design-icons-angular.js:159) at MapSubscriber.project (ant-design-icons-angular...
标题 "这个宠物小精灵不存在" 暗示我们可能要探讨的是一个与《宠物小精灵》(Pokémon)游戏或动画系列相关的项目,而这个项目可能是通过编程或数据分析来探索虚构角色的不存在性。标签 "Jupyter Notebook" 提示我们...
"SQL中对not in和not exist查询的替代算法.pdf" 本文主要讨论了SQL中对not in和not exist查询的替代算法。首先,作者简要介绍了SQL语言的基本概念和特点,然后讨论了not in和not exist查询的低效性及其原因。接着,...
开发项目必备的环境变量配置,其中包含java/maven/tomcat环境变量配置