【发布时间】:2021-07-08 16:32:11
【问题描述】:
我在 oracle db 中有一个交易表,每天有多达 2000 万条记录跨多个账户,账户增长到 ~100 个。
为了让我的查询尽可能快,我正在考虑:
- 超过 1 天间隔的日期字段范围分区
- 帐号字段上的哈希分区,因此每个帐户都有自己的每日交易集
我猜oracle会把这个表当作一个逻辑表,并为每个分区创建一个物理表?
关于 2 个不同的分区(范围和哈希)有什么建议吗?以及清除分区表中数据的任何特殊注意事项。
谢谢
【问题讨论】:
-
发布您有代表性的查询以便能够提示。例如。如果您经常过滤 range - hash 分区将无济于事。
-
为什么要对账号进行哈希分区?也许帐号范围也可以工作。
-
通常分区不会加快您的查询速度,不要指望任何奇迹。如果分区设计与您的查询非常协调,则查询可能会更快。但是,当您必须清除旧数据时,DROP/TRUNCATE 分区比 DELETE 快得多。