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