IT技术江湖   操作系统   安全技术   平面设计   Web开发   数据库   互联网   搜索引擎   网络广告   
引擎技术江湖  BLOG  合作联系
本站
Google
IT技术江湖
首页>数据库>SQL语言> SQL语句性能调整原则
  • IT技术江湖
  • SQL语句性能调整原则
    http://www.hack1st.com 来源: 2008-03-22 阅读: 评论

    ... where status <>'INVALID';
      再看下面这个例子:

    select * from employee where salary<>3000;
      对这个查询,可以改写为不使用NOT:

    select * from employee where salary<3000 or salary>3000;
      虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许Oracle对salary列使用索引,而第一种查询则不能使用索引。

      6. IN和EXISTS

      有时候会将一列和一系列值相比较。最简单的办法就是在where子句中使用子查询。在where子句中可以使用两种格式的子查询。


      第一种格式是使用IN操作符:

    ... where column in(select * from ... where ...);
      第二种格式是使用EXIST操作符:

    ... where exists (select 'X' from ...where ...);
      我相信绝大多数人会使用第一种格式,因为它比较容易编写,而实际上第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。

      第二种格式中,子查询以‘select 'X'开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器就不必遍历整个表而仅根据索引就可完成工作(这里假定在where语句中使用的列存在索引)。相对于IN子句来说,EXISTS使用相连子查询,构造起来要比IN子查询困难一些。

      通过使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。

      同时应尽可能使用NOT EXISTS来代替NOT IN,尽管二者都使用了NOT(不能使用索引而降低速度),NOT EXISTS要比NOT IN查询效率更高。

    上一页 1 2下一页

    上一篇:SQL中使用WITH AS提高性能  
    下一篇:深入浅出SQL系列教程之SQL语言简介

    ·网友互动--用户名: (新注册) 密码: 匿名评论 [所有评论]
    评论内容:(用户发表意见仅代表其个人意见,评论内容与本站立场无关,请自觉遵守互联网相关政策法规)
    关注此文读者还看过
    • ·深入浅出SQL教程之SELECT语句的自连接
      ·用TSQL求子串在父串中出现的次数
      ·Sql语句密码验证安全漏洞
      ·深入浅出SQL系列教程之SQL语言简介
      ·SQL语句性能调整原则
      ·SQL中使用WITH AS提高性能
      ·SQL语法参考手册
      ·T-SQL脚本:计算表的宽度
      ·用SQL语句修改表字段为主键
      ·在其他的编程接口中应当如何使用游标
    最新更新
    • ·深入浅出SQL教程之SELECT语句的自连接
      ·用TSQL求子串在父串中出现的次数
      ·Sql语句密码验证安全漏洞
      ·深入浅出SQL系列教程之SQL语言简介
      ·SQL语句性能调整原则
      ·SQL中使用WITH AS提高性能
      ·SQL语法参考手册
      ·T-SQL脚本:计算表的宽度
      ·用SQL语句修改表字段为主键
      ·在其他的编程接口中应当如何使用游标
    文章关注度排行
    ·Sql语句密码验证安全漏洞
    ·深入浅出SQL系列教程之SQL语言简介
    ·SQL语句性能调整原则
    ·用SQL语句修改表字段为主键
    ·用TSQL求子串在父串中出现的次数
    ·SQL语法参考手册
    ·深入浅出SQL教程之SELECT语句的自连接
    ·SQL中使用WITH AS提高性能
    热点推荐
    SQL语法参考手册
    SQL语法参考手册
    频道推荐
    • ·用SQL语句修改表字段为主键
    • ·SQL语法参考手册
    • ·SQL中使用WITH AS提高性能
    本站精华
    SQL语法参考手册
    SQL语法参考
    • ·SQL中使用WITH AS提高性能
    • ·SQL语法参考手册
    • ·用SQL语句修改表字段为主键
    • | 网站导航 | 联系QQ | 编辑邮箱 | RSS订阅 | 友情链接 | 官方blog
    • 版权所有:IT技术江湖 @2007-2008
    • powered by www.hack1st.com online services. all rights reserved.京ICP备07005766号