如何设计高效的数据库系统是一个综合性的问题,本文从Oracle表类型的角度提供一些参考。oracle提供各种类型的表,合理的使用这些表的特性可以在很大程度上提高我们数据库设计的高效性。
一.表类型概述
1.堆组织表(heap-organized table)这是标准的数据库表。数据以类似与堆的方式管理,增加数据时,将使用段中首先找到的适合于数据的可用空间。从表中删除数据时,使空间可供后继插入和更新操作使用。这就是名称中堆的来源。堆是一连串的空间,这些空间以某种随机的方式使用。
2.B*树索引集群表(B* tree index clustered table)利用这种类型的表可以完成两件事情。首先,许多表可以物理的连接在一起存储。通常,来自同一个表的数据可以期望在一个数据库块中找到。利用集群表,来自许多表的数据可以一起储存在相同的块中。其次,包含相同群键值的所有数据将物理的存储在一起。这些数据围绕群键值集群。群键利用B*树索引构造。
3.散列集群表(hash-clustered table)这种类型的表类似于集群表,但不使用B*树索引来按群键定位数据。散列群把键散列到群以确定在其上存储数据的数据库块。在一个散列群中,数据就是索引(比喻性的这样说)。这适合于经常通过键的相等比较读取的数据。有两种类型的散列集群表,分别是:单表和多表散列群。
4.索引组织表(index-organized table(IOT))其中一个表存储在一个索引结构中。他利用行自身的物理顺序。与堆不一样,堆中数据放在任何适合他的地方,而在IOT中,数据以根据之间来排序的次序存放。
5.外部表(external table)外部表提供了将数据存储在Oracle数据库外部扁平文件中的能力,不能修改这些表类型中的数据,只能查询他们,而且,不能象通常那样索引他们。