【发布时间】:2012-10-05 11:49:16
【问题描述】:
我有一个表 X,它有大约 64 列存储在线金融交易。 每天有数百万条记录被插入到 X 中。大约有 16 列 X 是可查询的,也就是说很多系统报表需要根据这 16 列的值来过滤 X 的数据。
为所有这 16 列设置数据库索引会使插入操作太慢。另一方面,在某些列上没有索引也会使某些报告太慢。
那么,问题来了。我如何设计表 X 及其索引以获得最佳的插入和报告性能?我使用 oracle 11g DBMS。
【问题讨论】:
-
您需要实时报告,还是 x 小时/天前的结果令人满意?
-
如果除了延迟数小时/天的报告没有其他解决方案,我不得不接受,但最好是在线报告。
-
为什么这个表有64列?我的直觉是这张表太宽了,其中一些数据应该分布在更多的表中。
-
如果您告诉我们表的结构(包括当前索引),也许我们可以提供帮助。
-
@Colin'tHart:关于这64个属性属于一个实体,即交易(交易日期、时间、金额、银行、卡号、账号等),不是明智的做法是将它们分布在不同的表中。
标签: sql database oracle indexing