索引表以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/