慢慢改变维度连接性能

时间:2015-05-11 13:28:32

标签: oracle performance join scd

概述:我有一个Oracle表'产品'包含大约8000万条记录,我想提高使用该表的连接的性能。在大多数情况下,我们对(表格)'产品'中的一小部分记录感兴趣。 with(column)' valid_until'日期(值)' mm / dd / 9999'。

可能的解决方案:

  • 分区' mm / dd / 9999'并使用分区交换快速加载新数据。
  • 在' valid_until'上使用索引日期。

你们有没有其他可能的Oracle解决方案或想法?

1 个答案:

答案 0 :(得分:1)

根据需要找到1%的记录,我希望索引足够。如果查询只是为当前产品找到它,那么包含表格的PK可能会付出代价。

如果不需要通过其他valid_until日期识别记录,那么通过索引来使用Oracle等效的部分索引可能是值得的:

case value_until
when date '...whatever the date is...'
then valid_until
else null
end

...但这意味着要更改架构或生成查询的工具,或两者兼而有之。

您可能会密切关注表格的统计数据,以确保所选行的基数受到合理准确的估算。

我不会选择基于分区的解决方案作为第一选择,因为在更新valid_until值期间行迁移的开销会相当高,但如果索引无法提供查询性能,那么所有意思是尝试。