:索引聚簇和哈希聚簇使用索引聚簇指南,考虑对经常在连接语句中访问的表建立聚簇。,如果表只是偶尔被连接或者它们的公共列经常被修改,则不要聚簇表。(修改记录的聚簇键值比在非聚簇的表中修改此值要花费更多的时间,因为Oracle必须将修改的记录移植到其他的块中以维护聚簇)。,如果经常需要在一个表上进行完全搜索,则不要聚簇这个表(对一个聚簇表进行完全搜索比在非聚簇表上进行完全搜索的时间长,Oracle可能要读更多的块,因为表是被一起存储的。),如果经常从一个父表和相应的子表中查询记录,则考虑给1对多(1:*)关系创建聚簇表。(子表记录存储在与父表记录相同的数据块中,因此当检索它们时可以同时在内存中,因此需要Oracle完成较少的I/O)。,如果经常查询同一个父表中的多个子记录,则考虑单独将子表聚簇。(这样提高了从相同的父表查询子表记录的性能,而且也没有降低对父表进行完全搜索的性能)。,如果从所有有相同聚簇键值的表查询的数据超过一个或两个Oracle块,则不要聚簇表。(要访问在一个聚簇表中的记录,Oracle读取所有包含那个记录值的全部数据块,如果记录占据了多个数据块,则访问一个记录需要读的次数比一个非聚簇的表中访问相同的记录读的次数要多)。簇的创建要想在你的模式中创建簇必须具有CREATECLUSTER系统权限,以及打算包含该簇的表空间的限额或具有UNLIMITEDTABLESPACE系统权限要想在另外用户的模式中创建簇你必须具有CREATEANYCLUSTER系统权限并且该拥有者必须具有打算包含该簇的表空间的限额或UNLIMITEDTABLESPACE系统权限用CREATECLUSTER语句创建簇如下语句创建一个存储emp和dept表的按deptno列成簇的名为emp_dept的簇CREATECLUSTERemp_dept(deptnoNUMBER(3))PCTUSED80--用于插入行的空间百分比PCTFREE5--用于更新的空间百分比SIZE600--它是一个估计的平均簇键及其相关的行所需的字节数TABLESPACEusersSTORAGE(INITIAL200K--盘区的初始大小NEXT300K--下一个盘区的大小MINEXTENTS2--最小的盘区数MAXEXTENTS20--最大的盘区数(MAXEXTENTSUNLIMITED表示无限制)PCTINCREASE33);--根据next大小要根据PCTINCREASE的比例增长--如果没有指定INDEX关键词像本例就默认地创建一个索引簇当指定了散列参数创建簇表用带有CLUSTER选项的CREATETABLE语句在簇中创建表,使用如下语句可以将emp和dept表创建到emp_dept簇中CREATETABLEemp(empnoNUMBER(5)PRIMARYKEY,enameVARCHAR2(15)NOTNULL,………deptnoNUMBER(3)REFERENCESdept)CLUSTERemp_dept(deptno);CREATETABLEdept(deptnoNUMBER(3)PRIMARYKEY,……)CLUSTERemp_dept(deptno);可以在CREATETABLE语句中为簇表指定模式簇表可以在与包含该簇的模式所不同的
Oracle聚簇表使用指 来自淘豆网www.taodocs.com转载请标明出处.