网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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处理中文乱码的一种方.
.将数据库访问集成到 Linux 应用中.
.Oracle认证资料.
.TestKing Oracle 1Z0-031 Edt7.0.
.Oracle数据库中存在默认密码威胁.
.gnome菜单编辑解决方案.
.如何利用oracle 10g的列值掩码技.
.如何在硬碟建置Linux系统之关於虚.
.Oracle的封锁机制分布式管理.
.Using Cisco Secure with Oracle.
.Keys,SuperKeys,Primary Keys.
.Oracle数据库常见问题答疑.
.启动postfix的时候提示unsupport.
.将数据导出成为文本格式的备份的.
.在Oracle数据库中如何使用超过2G.
.ExactPapers Oracle 1Z0-007 200.
.PL/SQL基本语法要素.
.Oracle9i初始化参数中文说明3.
.如何消除Oracle数据库的安全隐患.
.Oracle高手必读,不要错过噢!.

Oracle优化SQL执行效能的几点常识

发表日期:2008-2-9



  我想大家都知道,优化数据库的执行效能是一个专门的技术,Oracle有这方面专门的图书,如Oracle Tunning Tec.本文只涉及了很少的一部分--优化SQL的一些小常识。
  
  1)不知大家是否喜欢使用‘NOT IN’这样的操作,假如是,那尽量使用(NOT) EXISTS 替代
  
  例子:
  语句1
  
  SELECT dname, deptno
  
  FROM dept
  
  WHERE deptno NOT IN
  
  (SELECT deptno FROM emp);
  
  语句2
  
  SELECT dname, deptno
  
  FROM dept
  
  WHERE NOT EXISTS
  
  (SELECT deptno
  
  FROM emp
  
  WHERE dept.deptno = emp.deptno);
  
  明显的,2要比1的执行性能好很多
  
  因为1中对emp进行了full table scan,这是很浪费时间的操作。而且1中没有用到emp的index,
  
  因为没有where子句。而2中的语句对emp进行的是range scan。
  
  
  
  2)在海量查询时尽量少用格式转换。
  
  如用
  
  WHERE a.order_no = b.order_no
  
  而不用
  
  WHERE TO_NUMBER (substr(a.order_no, instr(b.order_no, '.') - 1)
  
  = TO_NUMBER (substr(a.order_no, instr(b.order_no, '.') - 1)
  
  
  
  
  3)查询海量数据是,可以使用optimizer hints,例如/*+ORDERED */
  
  如
  
  SELECT /*+ FULL(EMP) */ E.ENAME
  
  FROM EMP E
  
  WHERE E.JOB = 'CLERK';
  
  而不是
  
  SELECT E.ENAME
  
  FROM EMP E
  
  WHERE E.JOB '' = 'CLERK';
上一篇:如何查看各个表空间占用磁盘情况? 人气:738
下一篇:复杂应用环境监控ORACLE数据库性能 人气:566
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐