相关文章  
  • 提升Win XP性能的20个特殊技巧
  • Windows操作系统的十则高级应用技巧
  • 通过 XML 发布新闻
  • Windows 2000操作系统优化实战
  • 了解一下NULLs怎样影响IN和EXISTS
  • 细说Windows XP 虚拟内存优化
  • 戳穿优化Windows XP的经典谣言
  • Windows XP系统全面软优化
  • 再谈如何释放C盘空间 27招具体优化技巧
  • 详解Windows非法操作的具体含义
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    子查询中的IN与EXISTS的区别1


      在复杂的查询中,选择正确的子句将会对性能产生很大的影响。考虑一下在你的编码中使用过哪一些子句。
      
      在主要/明细关系表中写一个SQL的时候,多数人都会经历这么一步,那就是决定是使用WHERE EXISTS(…)子句还是WHERE值IN(…)子句来编写查询语句。你可能会拒绝使用WHERE EXISTS,因为用它来编写的话,要返回一个值,在语法上很困难,而这正是你经常忽视的。
      
      可是,如果你使用基于规则的最优化的话,情况就会大不相同了。你可以通过了解哪个表是驱动表,以及每一部份会返回多少行,来确定一个基于规则的查询的性能。
      
      当你用IN子句来写一个查询语句的时候,就等于你向该基于规则的最优化传达了这样一个信息,即你想让内部的查询推动外部的查询(假定:IN=由里而外)。举例来说,为在一个有14行记录的EMP表中查询员工名称等于“KING”的所有记录到一个直接报表中,你可以这样写:
      
      select ename from emp e
      
        where mgr in (select empno from emp where ename = 'KING');
      
      以下是关于这个查询

    页码:[1] [2] [3] [4] [5] [6] [7] [8]1页、共8页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved