动态网站制作指南 [  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教程 ]的信息

本月文章推荐
.在listener.ora文件中tcp协议和i.
.对Oracle学习者的一些建议:兴趣.
.Oracle系统密码文件创建、使用及.
.调整缓冲区高速缓存(Buffer Cach.
.AIX下自动启动Oracle数据库与监听.
.如何捕获问题SQL解决过度CPU消耗.
.几种用VB访问Oracle数据库技术的.
.Linux之菜鸟日记(四).
.精彩arm linux演义.
.Oracle 10g学习手册2:安装与构建.
.关于数据库名(db_name)、实例名(.
.保证Oracle数据库安全性的策略和.
.Oracle的运行方式.
.Oracle Database 10g:改善的表空.
.对条件子句中带IN的SQL语句使用绑.
.ORACLE DBA常用SQL脚本工具-&.
.Oracle 的数据库的数据备份与恢复.
.oracle中如何删除重复数据.
.Oracle Developer/2000 字符集的.
.Oracle9i不仅仅是数据库.

Oracle SQL的优化(1)

发表日期:2008-2-9 |


1、在Oracle中有两种操作可以直接访问Table
   (1)Table Access Full
      --为了优化全表扫描的性能,Oracle在每次数据库读取中都会读取多个数据块;
      --只要查询中没有where子句,Oracle就会采用全表扫描。
   (2)Table Access by RowID(基于RowID的访问)
      --RowID记录了数据行的物理存储位置;
      --Oracle使用索引将数据值与RowID相关联,从而与数据物理位置相关联。
2、提示:在select要害字之后使用/*+... */ 3、使用Index:
   (1)Index unique scan
 select * from bookshelf where title='WTL'
 假设在title列上有唯一索引,则这个语句的执行方式为:
            a)首先通过insex unique scan操作访问title列索引;
     b)从索引返回与title值'WTL'相匹配的RowID值,然后利用此RowID值
       通过Table Access by RowID操作来查询BookShelf表。
   (2)Index range scan
        假如基于一个值的范围查询或者利用一个非唯一索引进行查询,则可以使用index range
      scan操作对索引进行查询。由于index range scan操作需要从索引中读取多个值,所以它的
      效率要比index unique scan低。
          假设emp表的ename上有一个非唯一索引idx_emp_ename,假如在查询的where子句中给出
      ename的限定条件,则可能会执行idx_emp_ename索引的index range scan操作,应为ename上
      的这和索引是一个非唯一性索引,所以数据库不能在该索引上执行index unique scan操作,
      即便是ename等于查询中的单个值也不行,即...where ename='GLEDESON' 和
      ...where ename like 'G%'都是执行index range scan 操作的。
          注重:假如在like条件中的开头使用了通配符则查询将不会使用索引(如:like '%M%')
                来解决这个查询。
4、使用索引的注重事项:
   (1)假如设置了一个索引列等(=)一某个值,则将使用index range scan操作
             --唯一索引(unique index)
      *索引--
             --非唯一索引(non-unique index)    (2)要使用一个索引不一定要给出明确的值,index range scan操作可为值的范围扫描一个索引,具
      体的操作符有"<"、">"、"like",注重:不要在like算式的开头使用通配符!!
                 --索引的全表扫描
      *全表扫描--
                 --表的全表扫描
   (3)假如在where条件中使用了函数,则不会使用索引,除非索引是基于函数的!
   (4)在查询条件中使用了is null、is not null则不会使用索引。
(null值是不存在索引中的)
      *在大多数情况下,执行全表扫描将会比执行用索引返回的所有值执行索引扫描更为有效!
   (5)假如在查询条件中使用了"!="操作将不会使用索引,"<>"也不会。
   (6)使用not in、in操作符也不会使用索引,在Oracle中,几乎所有的not in、in操作都可以
      用not exists、exists来代替。...where exists(select 'x' from ...where ...)
      *使用exists子句,不管从子查询中抽取什么数据,它只会查看where子句。这样优化器就
       不会遍历整个表而仅根据索引就可以完成工作(这里假设where子句中的列上使用了index).
       通过使用exists,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹
       配项,这样就节省了时间。Oracle在执行in查询时,首先执行子查询,并将获得的结果列
       表存放到一个加了索引的临时表中,在执行子查询之前,先将主查询挂起,待子查询执行
       完毕存放到临时表中以后再执行主查询,这就是使用exists比使用in通常查询速度快的原
       因。
   (7)假如设置了复合索引的首列等于某个值,则使用该索引。
      *在复合索引中,Oracle9i之前,只有在限定条件中使用了复合索引的首列,才会使用该索
       引,但Oracle9i之后,索引的跳跃扫描特性答应优化器潜在地使用连接索引,即使复合索
       引的首列没有出现在where子句中也是如此!
   (8)假如选择了一个索引列的max或min函数,则优化器会使用此索引来快速地找到列的最大最小
      值。
   (9)索引的选择性:假设一个表中有100行,其中的一列(这列上有索引)中不重复的纪录有80个,
      也就是说有20行纪录有重复,则这个索引的选择性为80/100=0.80,即这列上的索引的选择
      性是80%,选择性越高,列中每个不同的值返回的行的数目就越少。
          假如使用的优化模式是CBO,并且索引是经过分析的,则优化程序就会考虑索引的选择
      性来判定使用索引是否会降低执行查询的成本。
上一篇:转一个很好的Oracle贴子 人气:558
下一篇:Oracle 9i在AIX 5L上的安装、建库和升级 人气:706
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-12 team论坛 v2.0.4 bulid 080916 A
2008-10-12 Roclog v3.1.6
2008-10-12 SupeV v1.0.1 简体中文 GBK
2008-10-12 NetCMS v1.6.0.1010 正式版
2008-10-12 PHP考试系统PPFrame v1.2.7
2008-10-12 LPAS个人相册 v1.6.3
2008-10-12 快问仿百度知道系统 动态-静态-互
2008-10-12 方卡广告防点击系统 V1.0 GB2312
2008-10-12 泡菜内容管理系统[PCMS] v1.0 Bu
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号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成