Index Organized table by itself is a B-tree index. Index key is the primary key and the rest of columns are index values. 

The rows are stored in the primary key order. 

IOT provides fast access to a specific row by primary ke or the prefix of primary key. 

Any insert/update/delete will cause the IOT rebuilt, therefore use IOT only when data is rarely changed.

IOT cannot contain virtual columns.

Index Organized table 它本身就是一个a B-tree index, Index key 是主键和列的集合 在index values里

记录是按主键顺序存储的

IOT 提供了 快速访问到指定的记录通过主键或者 主键的前缀

任何  insert/update/delete  会导致IOT 重建, 因此IOT 只有当数据是很少变动时。

因为主键列是有序的,每次插入都得rebuilt

IOT 不能包含虚拟列

一个index-organized table 是一个表存储在一个变化的B树索引结构。

在一个 heap-organized table, rows 是被插入到它们合适的地方,

在一个index-organized table, rows是存储在一个索引定义在主键上。

每个index entry 在B-tree 也存储费索引列的值。

因此,index 就是数据,数据就是索引。

应用操作index-organized tables  就像操作heap-organized tables, using SQL statements.

对于一个 index-organized table的比喻, 假设一个人力资源管理器 有一个纸板箱子。

每个盒子都标记有一个数据---1,2,3,4 等等但是盒子不处在书架上的顺序 每个盒子包含一个指向到书架上的位置

Row overflow Area

The index entries can be large as they contain an entire row. Row overflow area is a seperate segment. If a row overflow area is specified, database divides a row into two parts:

The index entry: contains primary key, a physical rowid pointing to the overflow part of the row, and optionally a few of non-key columns. This part is saved in the b-tree segment.

Overflow part: contains remaining, non-key columns, stored in the row overflow area segment.

 index entries  可以变得很大 来包含整条记录,Row overflow area 是一个单独的对象。

 如果一个 row overflow area 被指定, 数据库讲一行分隔2个部分

 index entry 包含主键, 一个屋里的rowid 指向一个记录的overflow  部分,和一些非键列。

heap表测试:

SQL>   create table t1  (id int ,a1 char(10),a2 char(10),a3 char(10));

表已创建。
alter table t1 add constraint pk_t1 primary key(id); begin
for i in 1 .. 50
loop
insert into t1 values(i,i,i,'a'||i);
end loop
;
commit;
end; SQL> select * from t1; ID A1 A2 A3
---------- ---------- ---------- ----------
51 51 51 a51
52 52 52 a52
1 1 1 a1
2 2 2 a2
3 3 3 a3
4 4 4 a4
5 5 5 a5
6 6 6 a6
7 7 7 a7
8 8 8 a8
9 9 9 a9 ID A1 A2 A3
---------- ---------- ---------- -------- 普通的heap表主键是不排序的,IOT表主键是排序的 iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT。但是在不指定主键Primary Key的情况下,是不允许建表的。 SQL>
SQL> create table t2 (id int,a1 char(10),a2 char(10),a3 char(10))organization index;
create table t2 (id int,a1 char(10),a2 char(10),a3 char(10))organization index
*
第 1 行出现错误:
ORA-25175: 未找到任何 PRIMARY KEY 约束条件 create table t2 (id int primary key,a1 char(10),a2 char(10),a3 char(10))organization index; begin
for i in 1 .. 50
loop
insert into t2 values(i,i,i,'a'||i);
end loop
;
commit;
end; SQL> select * from t2; ID A1 A2 A3
---------- ---------- ---------- ----------
1 1 1 a1
2 2 2 a2
3 3 3 a3
4 4 4 a4 45 45 45 a45
46 46 46 a46
47 47 47 a47
48 48 48 a48
49 49 49 a49
50 50 50 a50
51 51 51 a51
52 52 52 a52 已选择52行。 IOT表是按主键排序的

IOT和HEAP表区别的更多相关文章

  1. heap表和iot表排序规则不同

    heap 和iot 对比 OBJECT_NAME OBJECT_TYPE --------------------------------------------------------------- ...

  2. iot表输出按主键列排序,heap表不是

    <pre name="code" class="html"> create table t1 (id char(10) primary key,a1 ...

  3. heap表按字符串和数值型排序规则

    SQL> create user scan identified by scan default tablespace users; User created. SQL> grant db ...

  4. Oracle heap 表的主键 dump 分析

    1. 创建heap 表: create table t1 (id char(10) primary key,a1 char(10),a2 char(10),a3 char(10)); SQL> ...

  5. Shallow Heap 和 Retained Heap的区别

    http://blog.csdn.net/a740169405/article/details/53610689 Shallow Heap 和 Retained Heap的区别 https://i.c ...

  6. iot表和heap表排序规则不同

    SQL> select * from (select * from t1 order by id ) where rownum<20; ID A1 A2 A3 ---------- --- ...

  7. hive内部表与外部表区别

    1.在Hive里面创建一个表: hive> create table wyp(id int,    > name string,    > age int,    > tele ...

  8. 面试题思考:Stack和Heap的区别

    堆栈的概念: 堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常 ...

  9. stack,heap的区别

    一个由C/C++编译的程序占用的内存分为以下几个部分    1.栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等.其    操作方式类似于数据结构中的栈.    ...

随机推荐

  1. 三个API:开启、关闭、关闭线程重定向

    C:\Windows\sysnative\ 这个目录是作什么用的?来源:互联网 责任编辑:小易 时间:2015/11/13 0:17:19用户提出问题:C:\Windows\sysnative\ 这个 ...

  2. Hibernate 3中如何获得库表所有字段的名称

    15问:Hibernate 3中如何获得库表所有字段的名称 答:可以使用以下的程序获得. Configuration conf = new Configuration(); conf.configur ...

  3. 只启动一个zookeeper配置 server1只需要配置一个

    [root@wx03 conf]# cat zoo.cfg # The number of milliseconds of each tick tickTime=2000 # The number o ...

  4. 香蕉派 BPI-M1+ 双核开源硬件单板计算机

    香蕉派 BPI-M1+ 开源硬件开发板 深圳市源创通信技术有限公司公司 http://www.sinovoip.com.cn/cp_view.asp?id=562 产品介绍 Banana PI BPI ...

  5. UVA 718 - Skyscraper Floors(数论)

    UVA 718 - Skyscraper Floors 题目链接 题意:在一个f层高的楼上,有e个电梯,每一个电梯有x,y表示y + k * x层都能够到,如今要问从a层是否能到达b层(中间怎么换乘电 ...

  6. iOS开发RunTime之函数调用

    文章来自小笨狼的iOS博客,一直认为csdn的博客UI不太好看,看博客不太爽.所以自己搭建了一个博客. 欢迎各位去链接中看我的博客.也欢迎大家加QQ群讨论iOS技术问题 经过两个多月的面试,工作最终尘 ...

  7. 立贴读 《CLR》

    弱弱的说,我要开始读<CLR>这本书了,怕自己不能坚持下来,特立贴监督自己,本来是大牛们涉及的区域,现在好朋友的鼓励下,勇敢的踏入,如有错误,还请各位指正.

  8. C#中的正则 Regex类

    转义符的总结: 开始数 …………………………………………………………. 3 )Regex.matches() 提取所有符合要求的字符串 string str=@"绩大于80,则奖励50元.语 ...

  9. ORA-01403: no data found

    在项目的存储过程中有这样一句话 select jgdm,jgmc into parm_mrjgdm,parm_mrjgmc From BL_KHXX  where jgdm=PARM_JGDM; 每次 ...

  10. perl 调用方法 子例程说明

    Perl does not provide any special syntax for class definitions Perl 不提供任何特殊的语法对于类的定义 A package is si ...