博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql中的Exists和in
阅读量:6293 次
发布时间:2019-06-22

本文共 734 字,大约阅读时间需要 2 分钟。

最近学习数据库的分页算法,提到第一种

SELECT TOP 页大小 *

FROM table1
WHERE id NOT IN
          (
          SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
          )
ORDER BY id

HumanResources.Employee是Adventrureworks里的表,一共290条数据

      SELECT top 10 *  FROM HumanResources.Employee a where EmployeeID not in (

              SELECT TOP 200 EmployeeID order by EmployeeID) order by EmployeeID ;

执行结果正确,EmployeeID为201到210的数据查出来了

想到很多人不少EXISTS效率高吗?改一下

SELECT top 10 *  FROM HumanResources.Employee a where not EXISTS (

     SELECT TOP 200 EmployeeID FROM HumanResources.Employee where a.EmployeeID = EmployeeID order by EmployeeID )
 order by EmployeeID;

结果一条没有。很奇怪,找了好久,看了才知道“in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询”。一直以来认为exists比in效率高的说法是不准确的。

转载于:https://www.cnblogs.com/SimpleCode/p/3165861.html

你可能感兴趣的文章
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>