首页 | IT科技 | 外语学习 | 论文大全 | 设计学院 | 管理营销 | 健康频道 | 美食天下 | 财经股市 | 资讯下载 | 论坛 | 博客
IT首页 | 前沿 | 基础 | 接入 | 交换 | 路由 | 安全 | 存储 | 传输 | 数据库 | 网管 | 方案 | 建站 | 编程 | 技巧 | RFC |
 
您现在的位置: 中华学习网 >> IT >> 数据库 >> Oracle >> 文章正文
ORACLE SQL性能优化系列 (五)
it.no1edu.net 佚名 不详 2006-12-15【字体:



17.       使用表的别名(Alias)

当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.

 

(译者注: Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属)

 

18.       用EXISTS替代IN

在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率.

 

低效:

SELECT * 

FROM EMP (基础表)

WHERE EMPNO > 0

AND DEPTNO IN (SELECT DEPTNO 

FROM DEPT 

WHERE LOC = ‘MELB’)

    

高效:

SELECT * 

FROM EMP (基础表)

WHERE EMPNO > 0

AND EXISTS (SELECT ‘X’ 

FROM DEPT 

WHERE DEPT.DEPTNO = EMP.DEPTNO

AND LOC = ‘MELB’)

 

 

 (译者按: 相对来说,用NOT EXISTS替换NOT IN 将更显著地提高效率,下一节中将指出)

 

 

19.       用NOT EXISTS替代NOT IN

在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历).  为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.

 

例如:

SELECT …

FROM EMP

WHERE DEPT_NO NOT IN (SELECT DEPT_NO 

                        &n

[1] [2] 下一页


 

文章录入:anycall    责任编辑:anycall 

  • 上一篇文章:

  • 下一篇文章:
  • 赞助商链接



    娱乐资讯推荐
    搜索您感兴趣的内容
    Google
     
    普通文章[组图]下一代思科服务器负载均衡(SLB)架构
    推荐文章logminer使用步骤二(分析DML操作)
    推荐文章如何消除Oracle数据库的安全隐患(1)
    推荐文章Oracle数据库的备份及恢复策略研究
    推荐文章Oracle 连接常见错误及解决方法
    推荐文章Oracle 存储过程返回结果集
    推荐文章Oracle 9.2.0.1在hpux下的安装过程
    推荐文章Oracle导出备份和导入恢复自动产生sql源代码
    推荐文章Oracle Pro*C/C++游标和存储过程性能测试报告
    推荐文章安装文档ORACLE9i for sun solaris
     
    (只显示最新10条。评论内容只代表网友观点,与本站立场无关!)