概述:我有一个Oracle表'产品'包含大约8000万条记录,我想提高使用该表的连接的性能。在大多数情况下,我们对(表格)'产品'中的一小部分记录感兴趣。 with(column)' valid_until'日期(值)' mm / dd / 9999'。
可能的解决方案:
你们有没有其他可能的Oracle解决方案或想法?
答案 0 :(得分:1)
根据需要找到1%的记录,我希望索引足够。如果查询只是为当前产品找到它,那么包含表格的PK可能会付出代价。
如果不需要通过其他valid_until日期识别记录,那么通过索引来使用Oracle等效的部分索引可能是值得的:
case value_until
when date '...whatever the date is...'
then valid_until
else null
end
...但这意味着要更改架构或生成查询的工具,或两者兼而有之。
您可能会密切关注表格的统计数据,以确保所选行的基数受到合理准确的估算。
我不会选择基于分区的解决方案作为第一选择,因为在更新valid_until值期间行迁移的开销会相当高,但如果索引无法提供查询性能,那么所有意思是尝试。