创建索引表

索引表以B-树结构来组织表的数据,它是主键B-树索引的变种。对于普通表而言,其数据以无序方式存储;而对于索引表来说,其数据以B-树结构来组织,并且其叶块既包含键列数据,也包含非键列数据。一般情况下,表及其索引数据分别存放在表段和索引段中。当在where子句中引用索引列时,首先定位索引数据并取得rowid,然后根据rowid取得表的数据,如果要经常基于主键列检索表数据,那么orcle建议使用索引表。建立索引表时,oracle会将表及其主键索引的数据一起存放到索引段中,当在where字句中引用主键列时,oracle可以直接根据主键索引值取的表行数据。 

    对于普通表来说,表、索引数据分别存放到表段、索引段,要占用更多空间;而对于索引表来说,列键和非列键的数据都被存放到主键索引中。当经常使用主键列定位表数据时,应该建立索引。适应索引表,一方面降低了磁盘和内存空间占用,另一方面也可以提高访问性能。

    建立索引表

   建立索引表是使用create table 语句完成的,需要注意,建立索引表时,必须指定organization  index 关键字,并且必须定义主键约束。下面以创建索引表sales_info 为例,说明建立索引表的方法。

 
 1  create  table sales_info(
 2  id  number(6)  constraint pk_sale  primary key,
 3  customer_name  varchar2(30) ,sales_amount  number(10,2),
 4  sales_date date,remark  varchar2(2000)
 5  )organization  index tablespace USERS
 6  pctthreshold 20 including remark
 7* overflow tablespace USERS
QL> /

表已创建。

执行上述语句后,会建立索引表sales_info,其键列和非键列的数据会存放到主键的约束所对应的索引段pk_sale中,而溢出数据则会存放放到溢出段sys_iot_over_n(n:索引表的对象号) 中。定义索引表时,主键约束和organization index  选项既可以指定,也可以不指定。这些选项的具体作用如下:

    organization index :用于指定索引表,而tablespace则用于指定主键索引所在的表空间。

pctthreshold:用于指定数据块中为键列和部分非键列数据所预留空间的百分比。如果数据块剩余空间低于pctthreshold设置,oracle会将其它数据存放到溢出段。

  overflow tablespace :用于指定溢出段所在的表空间。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25607042/viewspace-691473/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25607042/viewspace-691473/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值