WEB开发网
开发学院数据库Oracle SQL Server和Oracle数据库索引介绍 阅读

SQL Server和Oracle数据库索引介绍

 2008-09-08 12:51:07 来源:WEB开发网   
核心提示: RAC 是一种Oracle 配置,其中多个实例可以装载和打开同一个数据库,SQL Server和Oracle数据库索引介绍(7),如果两个实例需要同时修改同一个数据块,它们会通过一个硬件互连(interconnect)来回传递这个块来实现共享,在这样的环境中,位图索引就特别有用 ,互连是两

RAC 是一种Oracle 配置,其中多个实例可以装载和打开同一个数据库。如果两个实例需要同时修改同一个数据块,它们会通过一个硬件互连(interconnect)来回传递这个块来实现共享,互连是两个(或多个)机器之间的一条专用网络连接。如果某个利用一个序列填充,这个列上有一个主键索引 ,那么每个人插入新值时,都会视图修改目前索引结构右侧的左块(见本文图一,其中显示出索引中较高的值都放在右侧,而较低的值放在左侧)。如果对用序列填充的列上的索引进行修改,就会聚集在很少的一组叶子块上。倘若将索引的键反转,对索引进行插入时,就能在索引中的所有叶子键上分布开(不过这往往会使索引不能得到充分地填充)。

反向键索引创建语句语法如下: 

   CREATEINDEXindex_nameontable_name(column_name)REVERSE;

降序索引

降序索引(descending index)是oracle 8i引入的,用以扩展B*树索引的功能,它允许在索引中以降序(从大到小的顺序)存储一列。在oracle8i及以上版本中,DESC关键字确实会改变创建和使用索引的的方式。

我们可以这样创建降序索引

   CREATEINDEXIDX_jobs_titleonhr.jobs(job_titleDESC);
  SETautotracetraceonlyEXPLAIN;
  SELECT*FROMhr.jobs
  WHEREjob_titleBetween'a'AND'ZZZZZZZZZZZ';
ExecutionPlan
  ----------------------------------------------------------
  0SELECTSTATEMENTOptimizer=CHOOSE(Cost=1Card=1Bytes=33)
  10FILTER
  21TABLEACCESS(BYINDEXROWID)OF'JOBS'(Cost=1Card=1B
  ytes=33)
  32INDEX(RANGESCAN)OF'IDX_JOBS_TITLE'(NON-UNIQUE)(C
  ost=2Card=1)        
  SQL>SELECT*fromhr.jobs
  2WHEREjob_titlebetween'a'and'ZZZZZZZZZZZ';
  ExecutionPlan
  ----------------------------------------------------------
  0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=1Bytes=33)
  10FILTER
  21TABLEACCESS(FULL)OF'JOBS'(Cost=2Card=1Bytes=33)
  SQL>DROPINDEXIDX_jobs_title;
  SQL>CREATEINDEXIDX_jobs_titleonhr.jobs(job_title);
  SQL>Select*FROMhr.jobs
  2Wherejob_titlebetween'a'and'ZZZZZZZZZZZ';
  ExecutionPlan
  ----------------------------------------------------------
  0SELECTSTATEMENTOptimizer=CHOOSE(Cost=2Card=1Bytes=33)
  10FILTER
  21TABLEACCESS(FULL)OF'JOBS'(Cost=2Card=1Bytes=33)

位图索引

位图索引(bitmap index)是从Oracle7.3 版本开始引入的。目前Oracle 企业版和个人版都支持位图索引,但标准版不支持。位图索引是为数据仓库/在线分析查询环境设计的,在此所有查询要求的数据在系统实现时根本不知道。位图索引特别不适用于OLTP 系统,如果系统中的数据会由多个并发会话频繁地更新,这种系统也不适用位图索引。

位图索引是这样一种结构,其中用一个索引键条目存储指向多行的指针;这与B*树结构不同,在B*树结构中,索引键和表中的行存在着对应关系。在位图索引中,可能只有很少的索引条目,每个索引条目指向多行。而在传统的B*树中,一个索引条目就指向一行。

B*树索引一般来讲应当是选择性的。与之相反,位图索引不应是选择性的,一般来讲它们应该“没有选择性“。如果有大量在线分析查询,特别是查询以一种即席方式引用了多列或者会生成诸如COUNT 之类的聚合,在这样的环境中,位图索引就特别有用 。位图索引使用 CREATE BITMAP INDEX index_name ON table_name(column_name1,column_name2) TABLESPACE tablespace_name命令语法创建。

上一页  2 3 4 5 6 7 

Tags:SQL Server Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接