网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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/JSP技术涉及日期和时间问.
.Oracle数据库安全策略分析(二).
.Oracle 9i中OCCI在VC6下不能DEBU.
.Oracle Optimizer:迁移到使用基于.
.新手上路:Oracle分析函数学习笔记.
.细化解析Oracle中限制返回结果集.
.更快地迁移数据.
.Install oracle client on Solar.
.Linux下如何优化Oracle.
.程式初始化设定档.
.Oracle 9I安装使用笔记.
.Oracle 8i迁移到10g出现的问题及.
.Oracle Optimizer:迁移到使用基于.
.oracle下定时执行过程脚本.
.如何杀掉带锁的oracle进程.
.如何改善Oracle的索引?.
.*[原创]*安装文档ORACLE9i for s.
.Oracle聚合函数RANK和dense_rank.
.Oracle性能究极优化.
.如何有效的利用ORACLE数据字典.

各种索引的结构分析 降序索引和位图索引

发表日期:2008-2-9


    降序索引     降序索引是8i里面新出现的一种索引,是B*Tree的另一个衍生物,它的变化就是列在索引中的储存方式从升序变成了降序,在某些场合下降序索引将会起作用。举个例子,我们来查询一张表并进行排序: SQL> select * from test where a between 1 and 100 order by a desc,b asc;     已选择100行。 Execution Plan
----------------------------------------------------------
   0    SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=100 Bytes=400)
   1  0  SORT(ORDER BY)(Cost=2 Card=100 Bytes=400)
   2  1 INDEX (RANGE SCAN) OF 'IND_BT' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)     这里优化器首先选择了一个索引范围扫描,然后还有一个排序的步骤。假如使用了降序索引,排序的过程会被取消。 SQL> create index test.ind_desc on test.testrev(a desc,b asc);     索引已创建。 SQL> analyze index test.ind_desc compute statistics;     索引已分析     再来看下执行路径: SQL> select * from test where a between 1 and 100 order by a desc,b asc;     已选择100行。 Execution Plan(SQL执行计划,稍后会讲解如何使用)。
----------------------------------------------------------
   0    SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=100 Bytes=400) 1  0 INDEX (RANGE SCAN) OF 'IND_DESC' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)     我们看到排序过程消失了,这是因为创建降序索引时Oracle已经把数据都按降序排好了。     另外一个需要注重的地方是要设置init.ora里面的compatible参数为8.1.0或以上,否则创建时desc要害字将被忽略。     位图索引     位图索引主要用于决策支持系统或静态数据,不支持行级锁定。位图索引最好用于低cardinality列(即列的唯一值除以行数为一个很小的值,接近零),例如又一个“性别”列,列值有“Male”,“Female”,“Null”等3种,但一共有300万条记录,那么3/3000000约等于0,这种情况下最适合用位图索引。     位图索引可以是简单的(单列)也可以是连接的(多列),但在实践中绝大多数是简单的。在这些列上多位图索引可以与AND或OR操作符结合使用。位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。位图索引的位图存放在B-Tree结构的页节点中。B-Tree结构使查找位图非常方便和快速。另外,位图以一种压缩格式存放,因此占用的磁盘空间比B-Tree索引要小得多。位图索引的格式如表26-1所示。     表26-1  位图索引的格式
       行
值 1 2 3 4 5 6 7 8 9 10
Male 1 0 0 0 0 0 0 0 1 1
Female 0 1 1 1 0 0 1 1 0 0
Null 0 0 0 0 1 1 0 0 0 0     假如搜索where gender=’Male’,要统计性别是”Male”的列行数的话,Oracle很快就能从位图中找到共3行即第1,9,10行是符合条件的;假如要搜索where gender=’Male’ or gender=’Female’的列的行数的话,也很轻易从位图中找到共8行即1,2,3,4,7,8,9,10行是符合条件的。假如要搜索表的值的话,那么Oracle会用内部的转换函数将位图中的相关信息转换成rowid来访问数据块。

上一篇:将Oracle与Developer/2000安装在一台机器 人气:602
下一篇:各种索引的结构分析 函数索引 人气:1004
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐