Oracle三种table: 堆表Heap Table、索引组织表IOT和聚簇表Cluste
常用数据库支持情况: Oracle使用rowid数据类型存储行地址,rowid可以分成两种,分别适于不同的对象,
Heap table:无序的集合存储。表和主键索引分成两个segment。创建的主键索引叶结点存储ROWID。 插入和更新快,结果无序。 从成本上计算,CBO并不是因为回表动作才确定执行计划,而是Clustering Factor的影响。IOT一个突出优势就是直接消灭了Clustering Factor的成本因素。
http://blog.sina.com.cn/s/blog_4b12778b0101cgl9.html http://blog.csdn.net/dnnyyq/article/details/5195472 IOT: 主键和表合成一个segment。数据是按主键有序的存储在B树索引结构中。叶结点存储了行记录。查询快,不回表,结果有序,插入和更新慢。 createtablet88( IDvarchar2(10), NAMEvarchar2(20),128)">constraintpk_idprimarykey(ID) ) organizationindex PCTTHRESHOLD20 overflowtablespaceusers INCLUDINGname; 注意两点: ● 创建IOT时,必须要设定主键,否则报错。 ● 索引组织表实际上将所有数据都放入了索引中。
索引组织表的适用情况:适用于信息检索、空间和OLAP程序。 经常更新的表当然不适合IOT。如果不是经常使用主键访问表,就不要使用IOT。
http://m.blog.itpub.net/17203031/viewspace-774405 聊聊Oracle聚簇Cluster Cluster table:多个表合成一个segment存储,多个数据表按照连接键的顺序保存在一起。经常和另外一个数据表进行连接查询(Join)显示。 create cluster emp_dept (deptno number) size 600; create table emp (empno number,empname varchar2(10),deptno number) cluster emp_dept(deptno); create table dept (deptno number primary key,deptname varchar2(10)) cluster emp_dept(deptno); create index idx_emp_dept on cluster emp_dept; insert into dept select deptno,dname from scott.dept; insert into emp select empno,ename,deptno from scott.emp; drop cluster emp_dept including tables; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |