背景:
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。 本文主题:第二章《Tables and Table Clusters》 - Overview of Tables。
索引聚簇概要
索引的聚簇是一种是用索引来定位数据的表簇。聚簇索引是一种基于簇键的B树索引。必须在向聚簇表插入任何行之前创建聚簇索引。
假设你用聚簇键department_id创建了聚簇表employees_department_cluster,如下所示。因为未指定HASHKEYS子句,这个剧簇就是索引聚簇。然后,在这个聚簇键上创建一个名为idx_emp_dept_cluster的索引,
可以在聚簇之上创建employees和departments表,指定department_id列作为聚簇键,如下所示,(括号中的省略号是列的位置)
此时,就可以向employees和departments表插入数据了。数据库会在物理层面上将来自于employees和departments表的每个department存储在同一个数据块中。数据库会以堆结构来存储行,使用索引定位这些数据。
下图展示了employees_departments_cluster表簇,他包含了employees和departments表。数据库会将department_id=20的雇员信息存储在一起,将department_id=110的雇员信息存储在一起,等等。如果没对表聚簇,数据库就无法保证相关的行能存储在一起,
B树聚簇索引会将聚簇键的值和包含数据的数据库块地址(database block address,DBA)进行关联。例如,键值为20的索引项会展示department_id=20的雇员数据所在的块地址,
20,AADAAAA9d
聚簇索引会被独立管理,就像非聚簇表的索引,能存储在和表簇不同的表空间中。
参考:
“Overview of Indexes”章节。
《Oracle Database Administrator's Guide》了解如何创建和管理索引聚簇。
《Oracle Database SQL Language Reference》了解CREATE CLUSTER的语法和语义。