网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle Jdbc的一些限制(10.2.0.1).
.Oracle数据库中管理表空间和数据.
.用SQL进行嵌套查询.
.TestKing Oracle 1z0-026 V3.
.通过Oracle虚拟索引决定是否建立.
.用VC开发基于ORACLE数据库方法.
.Linux平台数据库大比拚(3).
.ORACLE SQL性能优化系列 (八).
.Oracle rac安装过程详解(四).
.Fontconfig用户手册.
.案例讨论:批量删除Oracle数据库.
.关于数据库OS审计.
.在Oracle网络结构中解决连接问题.
.哪些因素可以影响Oracle数据库的.
.ORACLE常用傻瓜問題1000問(之十二.
.详细讲解Oracle数据库管理员认证.
.unix----hp-ux ,trusted system .
.sqlplus中改变日期的输出格式.
.oracle8的ROWID结构.
.Digital Unix Version 4.0下Orac.

ORACLE SQL性能优化系列(九)

发表日期:2008-2-9


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                          FROM DEPT                          WHERE DEPT_CAT=’A’);
为了提高效率.改写为: (方法一: 高效)
SELECT …. FROM EMP A,DEPT B WHERE A.DEPT_NO = B.DEPT(+) AND B.DEPT_NO IS NULL AND B.DEPT_CAT(+) = ‘A’ (方法二: 最高效)
SELECT …. FROM EMP E WHERE NOT EXISTS (SELECT ‘X’                     FROM DEPT D                     WHERE D.DEPT_NO = E.DEPT_NO                     AND DEPT_CAT = ‘A’);
上一篇:ORACLE SQL性能优化系列(七) 人气:744
下一篇:Oracle数据库的备份及恢复策略研究 人气:588
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐