zoukankan      html  css  js  c++  java
  • in和exists的效率问题

    有两个简单例子,以说明 “exists”和“in”的效率问题

    1) select * from T1 where exists(select * from T2 where T1.a=T2.a) ;

        T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高。

    2) select * from T1 where T1.a in (select T2.a from T2) ;

         T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高。

    exists 用法:

    1)句中的“select * from T2 where T1.a=T2.a” 相当于一个关联表查询,

         相当于“select * from T1,T2  where T1.a=T2.a”;

        “exists(xxx)”它只在乎括号里的数据能不能查找出来,是否存在这样的记录,如果存在,这1)句的where 条件成立。

    in的用法:

    2)句中的“select * from T1 where T1.a in (select T2.a from T2) ”,这里的“in”后面括号里的语句搜索出来的字段的内容一定要相对应,一般来说,T1和T2这两个表的a字段表达的意义应该是一样的,否则这样查没什么意义。

  • 相关阅读:
    忘了SA密码的SQL SERVER
    关于VC中的错误处理
    编译filezilla
    001.第一天|第二天
    JVM学习之类加载
    JAVA学习之HashCode
    JAVA学习之泛型
    JAVA学习之动态代理
    solr学习之域的管理与中文分析器配置
    solr 学习之简介及安装
  • 原文地址:https://www.cnblogs.com/michaelShao/p/1671374.html
Copyright © 2011-2022 走看看