首页 > 数据库 > SQL Server > 正文
SQL---In-Exists-Any
2017-01-09       个评论    来源:笃行淡言  
收藏    我要投稿

SQL---In-Exists-Any。假设A in(not in,exists,not exists )B In:只要A中的值在B中存在则返回truenot in:只要A中的值在B中不存在则返回trueexists:只要A中的值在B中存在则返回truenot exists:只要A中的值在B中不存在则返回trueany:三种情况 A > any B:A中的值只要大于B中的最小值则返回trueA < any B:A中的值只要小于B中的最大值则返回true

A = any B:A中的值只要等于B中的任何值则返回true 从表面上看,in和exists的效果几乎一模一样,不过之前看过一些资料上说,in和exists使用的算法不同,In用的是hash,exists用的是Btree;具体区别看链接 我在网上还看到过一种说法是:in会全表扫描,exists遇到第一个就直接返回。由于以当前的知识体系还不足以深挖,但我个人对这种说法持怀疑态度,这种说法的来与也可能与in和exists所使用的的算法有关,因为in先是对子表进行hash,而hash有个特点就是在查找的时候需要挨个比对,这可能就是全表扫描说法的来源,实际上并不是全表扫描,扫描的次数决定于hash表的规模和所谓的运气,因为hash的存储是随机的;而exists用的是树数据结构,那么在查找的时候就是分层查找。

点击复制链接 与好友分享!回本站首页
上一篇:公司--)SQL框架内部用
下一篇:SQL中单表的自我关联
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站