Oracle聚簇表使用方针

63 篇文章 6 订阅

使用下面的方针决定是否使用聚簇表:

  • 经常被应用的连接语句访问的表可以使用聚簇表
  • 如果应用只是偶尔地使用表连接,或者频繁修改连接列的值,则不要使用聚簇表。修改一行的聚簇键值比修改非聚簇表的值花费更长的时间,因为Oracle可能为了维护聚簇而把被修改的行从一个块迁移到另一个块。
  • 如果应用经常对聚簇中的一个表进行全表扫描,则不要使用聚簇表。对聚簇表的全面扫描会比对非聚簇表的全表扫描花费更长的时间。因为表被存储在一起,Oracle可能要读取更多的块。
  • 如果经常查询一个主表的记录和与之对应的子表记录,这种主子表可以放到一个聚簇中。子表和主表记录被存储在相同的数据块,因此当查询它们的时候将被一起读到内存中,Oracle会执行更少的I/O。
  • 如果经常查询与同一主表记录相关联的许多子表记录,单独把子表存储在一个聚簇中。这种方法改善与同一主表记录相关联的子表记录的查询性能,同时不会降低对主表全表扫描的性能。还有一种可选则的方法是使用索引组织表。
  • 如果聚簇中所有表的同一聚簇键值大于一个或两个Oracle块,则不要使用聚簇表。为了访问聚簇中的一行,Oracle要读取包含这行键值的所有块。如果这些行占用了多个块,则访问单一行将比访问非聚簇表里的相同行需要更多的读取次数。
  • 当每一个聚簇键值所对应的行数有很大不同时不要使用聚簇表。这将造成低基数键值的空间浪费,还将造成与高基数键值的冲突,会降低性能。

要针对应用的要求来考虑使用聚簇的优缺点。例如,你需要确定连接语句的性能提升是否超过了修改聚簇值的性能下降,你可能还需要做实验比较聚簇和单独存储所花费的处理时间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值