SQL语句NOT IN优化之换用NOT EXISTS
NOT IN查询示例(示例背景描述:根据条件查询Questions表得到的数据基本在PostedData表中不存在,为完全保证查询结果在PostedData表中不存在,使用NOT IN):
SET STATISTICS PROFILE ON; SET STATISTICS IO ON; SET STATISTICS TIME ON; GO /*--你的SQL脚本开始*/ SELECT A.Id FROM dbo.Questions A WITH ( NOLOCK ) WHERE A.QuestionState = '正常' AND A.CheckTime > '2018-09-29 16:00:00' AND A.StateShowID NOT IN ( SELECT B.IntId FROM dbo.PostedData B WHERE B.[Type] = 'question' ); /*你的SQL脚本结束*/ GO SET STATISTICS PROFILE OFF; SET STATISTICS IO OFF; SET STATISTICS TIME OFF;
查询耗时如图:
换用NOT EXISTS 查询示例:
SET STATISTICS PROFILE ON; SET STATISTICS IO ON; SET STATISTICS TIME ON; GO /*--你的SQL脚本开始*/ SELECT A.Id FROM dbo.Questions A WITH ( NOLOCK ) WHERE A.QuestionState = '正常' AND A.CheckTime > '2018-09-29 16:00:00' AND NOT EXISTS ( SELECT B.IntId FROM dbo.PostedData B WHERE B.[Type] = 'question' AND A.StateShowID = B.IntId ); /*你的SQL脚本结束*/ GO SET STATISTICS PROFILE OFF; SET STATISTICS IO OFF; SET STATISTICS TIME OFF;
查询耗时如图:
根据查询耗时明显可以看出,使用 NOT EXISTS 比NOT IN 的查询速度快很多。
But,我做了其他条件下的一些实验,发现根据条件查询A表得到的结果,在B表中存在时,两种查询的查询速度差异不大。还有一些情况NOT EXISTS的查询速度比NOT IN慢。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python全栈 Web(Django框架、模板继承、模型)
模板的继承: 语法: 在父模板中 必须要标识出那些内容在子模板中允许为修改 {% block 名称 %} {% endblock %} 在子模板中 指定继承自那个父模板 {% extends '父模板名称' %} 增加block标签 改写属于自的内容 {% block 名称 %} {% endblock %} block的作用: 在父模板中正常显示 在子模板中 如果不修改的话 则按父模板的内容显示 要是修改的话则按照子模板的内容显示 <!doctype html> &
- 下一篇
NullPointerException异常丢失堆栈信息
问题描述 手下一个项目,日志中存在以下没有任何堆栈信息的异常: 这是Hotspot虚拟机的fast throw机制对抛出异常的优化导致。当nullpointer、除零等异常在相同位置抛出一定多次后,优化机制会去掉堆栈信息缩短抛出流程的时间。 solution 增加启动参数:-XX:-OmitStackTraceInFastThrow。例: 命令行方式 java -XX:-OmitStackTraceInFastThrow -classpath . NpeThief tomcat启动参数 Environment='CATALINA_OPTS=-Xms512M -Xmx2048M -server -XX:+UseParallelGC -XX:-OmitStackTraceInFastThrow' 参考 1.http://jawspeak.com/2010/05/26/hotspot-caused-exceptions-to-lose-their-stack-traces-in-production-and-the-fix/ 2.https://stackoverflow.com/quest...
相关文章
文章评论
共有0条评论来说两句吧...