当前位置: 移动技术网 > IT编程>数据库>MSSQL > SQL---In-Exists-Any

SQL---In-Exists-Any

2018年09月24日  | 移动技术网IT编程  | 我要评论

暖友蒸汽眼罩,赵云转世之龙腾异世,翟鸿枭

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用的是树数据结构,那么在查找的时候就是分层查找。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网