• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    简述Oracle中in和exists的不同

    一直以来,大家认为exists比in速度快,其实是不准确的。且看接下来的具体分析:in其实是将外表和内表进行hash join,exists是先对外表进行loop操作,然后每次loop后再对内表进行查询。

    如果两张表大小差不多,那么exists和in的效率差不多。

    例如: 一张大表为A,一张小表B

    一、第一种情况

    select * from A where mm in (select mm from B)

    效率高,这里用到的是大表A上的索引

    select * from B exists (select mm from A where mm=B.mm)

    效率高,这里用到的是小表B上的索引

    二、第二种情况

    select * from B where mm in (select mm from A)

    效率低,这里用到的是小表B上的索引

    select * from A exists (select mm from B where mm=A.mm)

    效率高,这里用到的是大表A上的索引

    三、第三种情况

    not exists 在使用时依然会用到表上的索引,但是not in会进行全盘扫描

    因此,not exists 始终比not in 的效率高

    四、第四种情况

    in与==效果是相同的

    总结

    以上所述是小编给大家介绍的Oracle中in和exists的不同,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • Oracle In和exists not in和not exists的比较分析
    • Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案
    • Oracle minus用法详解及应用实例
    • linux系统oracle数据库出现ora12505问题的解决方法
    • oracle中not exists对外层查询的影响详解
    上一篇:Oracle 统计用户下表的数据量实现脚本
    下一篇:Oracle中dblink的实际应用示例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    简述Oracle中in和exists的不同 简述,Oracle,中,和,exists,的,