sco*_*ttm 2 sql sql-server sql-server-2000
我有5个数据库,代表该国的不同地区.在每个数据库中,有几百个表,每个表有10,000-2,000,000个事务记录.每个表都是相应区域中客户的表示.这些表中的每一个都具有相同的模式.
我想查询所有表,就像它们是一个表一样.我能想到的唯一方法是创建一个联合所有表的视图,然后只针对它运行我的查询.但是,客户表将一直在变化(因为我们获得和失去客户),因此我必须更改我的视图的查询以包括新表(或删除不再使用的表).
有没有更好的办法?
在回应评论时,(我也将此作为对答案的回复):
在大多数情况下,我不会删除任何表格,它们将保留用于历史目的.正如我在一篇回复中发表评论时,其想法是减少较小客户(一个只有10,000条记录)的时间来查询自己的历史记录.大约有1000个客户平均有1,000,000行(并且正在增长).如果我要将所有记录添加到一个表中,那么该表中将有近十亿条记录.我还以为我正在计划未来,因为当我们说5000个客户时,我们没有一个巨大的表来保存所有交易记录(这可能是我的想法中的错误).那么,最好不要像我一样划分记录吗?我应该将它们全部混合到一张桌子里吗?对客户ID进行索引是否可以防止向小客户查询数据的延迟?
我认为你的设计可能会被打破.为什么不使用一个包含区域和客户列的单个表?
如果我是你,我会考虑重构一个表,如果有必要(例如反向兼容),我会使用视图提供与前面表格相同的信息.
编辑以回复此帖子的OP评论:
只要你使用正确的索引,一个包含10 000 000 000行的表就可以了.构建数据库服务器是为了应对这种卷.
性能绝对不是将一个这样的表分成数千个小表的有效理由!
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |