深入剖析oracle索引组织表

索引组织表(IOT)不仅能存储数据,而且存储的表建立索引,索引组织表的数据是经过主键排序排列的顺序,提高了访问的速度,但这是以插入的开销和性能更新(重新排序,每次写和更新)。
索引组织表的格式如下所示:
复制代码代码如下所示:
创建表的索引表(
ID VARCHAR2(10),
名称VARCHAR2(20),
约束pk_id主键(ID)

组织指数;

注意两点:
当你创建一个物联网,你必须设置主键,否则你必须犯一个错误。
索引组织表实际上将所有数据放入索引中。
索引组织表属性
1,溢出子句(行溢出)
由于所有的数据都是索引的,当表的数据较大时,索引组织表的查询性能会降低,在这种情况下,存储溢出段来存储主数据和溢出数据,以提高效率:
PCTTHRESHOLD N:使一个数据块的一部分,当数据规模占领以外,其他的列数据线到溢流段
包括column_name:放入索引块在指定的柱,后柱放置在溢流坝段
PCTTHRESHOLD的字段中的数据,无法确定使用。
如果所有的行都是超越PCTTHRESHOLD指定大小,考虑使用包括。
复制代码代码如下所示:
创建表T88(
ID VARCHAR2(10),
名称VARCHAR2(20),
约束t88_pk_id主键(ID)

组织指数
PCTTHRESHOLD 20
溢出表空间
包括姓名;

如前面的例子所示,名称和列必须放入溢出柱等柱根据PCTTHRESHOLD规则。
2、压缩子句(键压缩)
与普通索引一样,索引组织表也可以使用压缩子句进行键控,以消除重复值。
具体操作是在组织索引之后添加压缩n子句。
它用于压缩索引列,在块级别提取公共因子,并避免重复值。
如:
复制代码代码如下所示:
创建表物联网(
业主VARCHAR2(8),
object_type VARCHAR2(8),
object_name VARCHAR2(8),
约束iot_pk主键(主,object_type,object_name))
组织指数
nocompress;

这意味着每个主键组合都将被物理存储。如果使用压缩N,重复列将不再物理存储。
n的意思是指定压缩的列数。默认值是无穷大。
例如,数据(1,2,3),(2)、(、)、(、)、(3)
如果压缩的方法,经常性的(1,2),(1,3)将被压缩
当使用压缩1时,仅压缩数据(1)。
索引组织表的维护
(1)索引组织表可以像普通堆表那样进行插入、更新、删除和选择操作。
(2)您可以使用修改表…溢出语句来更改溢出段的属性。
复制代码代码如下所示:
修改表的索引表添加溢出;

(3)要更改任何概览属性,必须首先定义溢出,如果该表已构建,则不能添加该表。
复制代码代码如下所示:
ALTER TABLE T88 PCTTHRESHOLD 15包括姓名;调节溢流参数
ALTER TABLE T88 initrans 2溢出initrans 4;——修改initrans特征的数据块和溢流段

索引组织表的应用
堆表是一个通用表,表中的数据是按命中率获得的。当进行全表扫描时,首先不首先插入的数据。当然,数据的存储也是随机的,这取决于可用的空闲空间。
物联网是一个类似于完整的索引表,表中的所有字段都放在索引中,因此同意当数据存储在将数据按照严格的规定,事实上已经插入之前,确定自己的位置,所以不管插入的序列,它的位置在物理顺序无关的插入。这样,很多块可少当你查询,但是当你把它插入,速度比普通人慢。索引组织表主要应用于信息检索、空间和联机分析处理程序。
索引组织表的应用:
1。代码查找表。
2。通常由主代码访问的表。
3,构建自己的索引结构。
4,加强数据的共同位置,并以特定的顺序存储数据。
5,经常在……之间使用…查询主要代码或唯一代码。
当然,经常更新的表不适合物联网,因为Oracle需要不断维护索引,因为字段多索引的开销很大。如果您不经常使用主键访问表,请不要使用物联网。
物联网提供以下好处:
提高缓冲缓存效率,因为给定查询中给定缓存中所需的块较少。
减少缓冲区高速缓存访问,提高了可伸缩性。
获取数据的总工作量较小,因为获取数据的速度更快。
每个查询完成的物理量较少。