动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
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教程 ]的信息

本月文章推荐
.Oracle回滚表空间丢失或损坏处理.
.ORACLE 回滚段表空间数据文件丢失.
.Oracle 数据库的配置方案 完全分.
.Oracle PL/SQL入门之慨述.
.数据库在网格计算中的角色.
.讲解Oracle数据库冷备份恢复的具.
.Oracle的Archive Log模式下的恢复.
.Oracle 9i 数据库管理实务讲座(一.
.安装Oracle 9i数据库服务器.
.[Oracle]10g中SPOOL内容追加至文.
.Oracle数据库数据对象分析(上).
.在redhat 9 上安装oracle 9.2.0..
.忘却Oracle的5个方面.
.PL/SQL基本语法要素.
.简单介绍Oracle数据库去除别名的.
.Oracle数据库管理脚本命名规范.
.可预见的Oracle应用程序的性能调.
.Oracle归档模式的命令及参数.
.如何从结果集中获得随机结果.
.Oracle 临时表空间使用注意.

ORACLE SQL性能优化系列 (十)

发表日期:2008-2-9 |


Oracle SQL性能优化系列 (十) 
31. 强制索引失效     假如两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) .   举例:   SELECT ENAME FROM EMP WHERE EMPNO = 7935 AND DEPTNO + 0 = 10 /*DEPTNO上的索引将失效*/ AND EMP_TYPE ‘’ = ‘A’ /*EMP_TYPE上的索引将失效*/   这是一种相当直接的提高查询效率的办法. 但是你必须谨慎考虑这种策略,一般来说,只有在你希望单独优化几个SQL时才能采用它.   这里有一个例子关于何时采用这种策略,   假设在EMP表的EMP_TYPE列上有一个非唯一性的索引而EMP_CLASS上没有索引.   SELECT ENAME FROM EMP WHERE EMP_TYPE = ‘A’ AND EMP_CLASS = ‘X’;   优化器会注重到EMP_TYPE上的索引并使用它. 这是目前唯一的选择. 假如,一段时间以后, 另一个非唯一性建立在EMP_CLASS上,优化器必须对两个索引进行选择,在通常情况下,优化器将使用两个索引并在他们的结果集合上执行排序及合并. 然而,假如其中一个索引(EMP_TYPE)接近于唯一性而另一个索引(EMP_CLASS)上有几千个重复的值. 排序及合并就会成为一种不必要的负担. 在这种情况下,你希望使优化器屏蔽掉EMP_CLASS索引. 用下面的方案就可以解决问题. SELECT ENAME FROM EMP WHERE EMP_TYPE = ‘A’ AND EMP_CLASS’’ = ‘X’;   32. 避免在索引列上使用计算. WHERE子句中,假如索引列是函数的一部分.优化器将不使用索引而使用全表扫描.   举例:   低效: SELECT … FROM DEPT WHERE SAL * 12 > 25000;   高效: SELECT … FROM DEPT WHERE SAL > 25000/12;   译者按: 这是一个非常实用的规则,请务必牢记   33. 自动选择索引 假如表中有两个以上(包括两个)索引,其中有一个唯一性索引,而其他是非唯一性. 在这种情况下,ORACLE将使用唯一性索引而完全忽略非唯一性索引.   举例: SELECT ENAME FROM EMP WHERE EMPNO = 2326 AND DEPTNO = 20 ;   这里,只有EMPNO上的索引是唯一性的,所以EMPNO索引将用来检索记录. TABLE Access BY ROWID ON EMP INDEX UNIQUE SCAN ON EMP_NO_IDX   34. 避免在索引列上使用NOT 通常, 我们要避免在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的 影响. 当ORACLE”碰到”NOT,他就会停止使用索引转而执行全表扫描. 举例:   低效: (这里,不使用索引)   SELECT … FROM DEPT WHERE DEPT_CODE NOT = 0;   高效: (这里,使用了索引)   SELECT … FROM DEPT WHERE DEPT_CODE > 0;   需要注重的是,在某些时候, ORACLE优化器会自动将NOT转化成相对应的关系操作符. NOT > to <= NOT >= to < NOT < to >= NOT <= to >     译者按: 在这个例子中,作者犯了一些错误. 例子中的低效率SQL是不能被执行的. 我做了一些测试:   SQL> select * from emp where NOT empno > 1; no rows selected Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP' 2 1 INDEX (RANGE SCAN) OF 'EMPNO' (UNIQUE)   SQL> select * from emp where empno <= 1; no rows selected Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP' 2 1 INDEX (RANGE SCAN) OF 'EMPNO' (UNIQUE)   两者的效率完全一样,也许这符合作者关于” 在某些时候, ORACLE优化器会自动将NOT转化成相对应的关系操作符” 的观点.   35. 用>=替代>   假如DEPTNO上有一个索引,   高效:   SELECT * FROM EMP WHERE DEPTNO >=4   低效:   SELECT * FROM EMP WHERE DEPTNO >3   两者的区别在于, 前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录.
 

上一篇:ORACLE SQL性能优化系列 (十三) 人气:812
下一篇:ORACLE SQL性能优化系列 (十一) 人气:800
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号