zoukankan      html  css  js  c++  java
  • 关于oracle中in和exists的区别

    一般来说,这两个是用来做两张(或更多)表联合查询用的,in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,假设有A、B两个表,使用时是这样的:

    1、select * from A where id in (select id from B)--使用in

    2、select * from A where exists(select B.id from B where B.id=A.id)--使用exists
    也可以完全不使用in和exists:

    3、select A.* from A,B where A.id=B.id--不使用in和exists

    具体使用时到底选择哪一个,主要考虑查询效率问题:

    第一条语句使用了A表的索引

    第二条语句使用了B表的索引

    第三条语句同时使用了A表、B表的索引

    如果A、B表的数据量不大,那么这三个语句执行效率几乎无差别;

    如果A表大,B表小,显然第一条语句效率更高,反之,则第二条语句效率更高;

    第三条语句尽管同时使用了A表、B表的索引,单扫描次数是笛卡尔乘积,效率最差。

  • 相关阅读:
    Shell Sort
    Insertion Sort
    Notations
    Nakamori Akina
    QuickSort
    Onedrive File Open Problem
    JSON Introduction
    System Call
    进程软中断通信
    Bubble Sort
  • 原文地址:https://www.cnblogs.com/oraclelike/p/6130302.html
Copyright © 2011-2022 走看看