对于in与exists的区别:
in适合于外表大而内表小的情况;exists适合于外表小而内表大的情况。
如果子查询得出的结果集记录较少,主查询的表较大且又有索引时应用in,反之如果外层的主查询记录较少,子查询中的表大,
又有索引时使用exists。
其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键)。如果是exists,那么以外层的表为驱动表,先
被访问,如果是in,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了。
另外in时不对null进行处理,如:select 1 from dual where null in(0,1,2,null)返回为空。
对于not in和 not exists的区别:
not in 在执行时,为了证明存在性,必须遍历整个表单,从第一个数据到最后一个;而 not exists 在执行时,只要出现第一
个数据,就不会再执行子查询。
所以效率上,not exists比 not in高效的多。
not in 只有当子查询中,select关键字后的字段有not null约束或者有这种暗示时用not in。另外如果主查询中表大,子查询
中表小但是记录多,则应当使用not in。如果主查询表中记录少,子查询表中记录多,并有索引,可以使用not exists,另外not in
最好用 外连接 + is null。
尽量不要使用not in(它会调用子查询),而尽量使用not exists(它会调用关联子查询)。
如果子查询中返回的任意一条记录含有空值,则查询将不返回任何记录。
相关推荐
5.SQL Server 2014数据库修改与删除.mp4 6.SQL Server 2014数据库备份与还原.mp4 7.SQL Server 2014数据类型.mp4 8.SQL Server 2014新建表.mp4 9.SQL Server 2014修改、删除表结构.mp4 PPT SQL Server 2014...
47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑补充和总结口诀.avi 44.MySQL高级_索引面试题分析.avi 43.MySQL高级_索引优化10.avi 42.MySQL高级_索引优化9.avi ...
§12.5 使用EXISTS和IN 148 §12.6 分离事务(Discrete Transactions ) 149 §12.7 测试SQL语句性能 151 §12.7.1 SQL_Trace实用工具 151 §12.7.2 TKPROF实用程序 151 §12.8 使用SQL_Trace和TKPROF 151 §12.8.1 ...
SQL Server数据库设计和高级查询 DLC DLC\指导学习PPT DLC\指导学习PPT\指导学习V1.0.ppt DLC\指导学习答案.sql chapter2 chapter2\上机部分 chapter2\上机部分\教学幻灯片 chapter2\上机部分\教学幻灯片\LG2V1.0....
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword' /** 导出文本文件 EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -P...
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE; 9:导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql....
MYSQL自动备份脚本 功能说明:1 自动保留前三天的数据备份2 命令参数决定要备份的数据库,可以..."fi### delete txt file if exists#rm -rf ${backuppath}*.txt###################################################
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt”INTO TABLE MYTABLE; 9:导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/...
以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库...
与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅...
上述服务有不存在的会提示,服务中读取信息时出错:没有那个文件或目录。没问题,忽略。 停用NTP服务 /sbin/service ntpd stop chkconfig ntpd off mv /etc/ntp.conf /etc/ntp.conf.bak 重启所有节点 安装yum源...
确认系统中vsFTPd的安装和版本情况: [root@localhost ~]#rpm –q vsftpd 安装vsFTPd命令: [root@localhost Server]#rpm –ivh vsftpd-2.0.5-12.el5.i386.rpm 在vsftpd.conf文件中配置匿名访问: anonymous_...
'声明函数中所需的全局变量 Dim conn,rs,oStream,NoPackFiles,RootPath,FailFileList NoPackFiles="|<$datafile>.mdb|<$datafile>.ldb|" '------------------------------------------------------------- Call Main...
保存在oracle数据库中的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择...
01015获取在Excel主窗口中一个窗口所能占有的最大高度和宽度 01016获取当前打印机名称 01017获取MicrosoftExcel剩余内存 01018获取MicrosoftExcel的总内存 01019获取计算机被Excel占用的内存 01020改变Excel窗口大小...