【发布时间】:2010-10-19 14:57:15
【问题描述】:
我有 5 个代表该国不同地区的数据库。在每个数据库中,有几百个表,每个表有 10,000-2,000,000 条事务记录。每个表都代表相应地区的客户。这些表中的每一个都具有相同的架构。
我想查询所有表,就好像它们是一张表一样。我能想到的唯一方法是创建一个合并所有表的视图,然后针对它运行我的查询。但是,客户表会一直变化(随着我们获得和失去客户),所以我必须更改我的视图的查询以包含新表(或删除不再使用的表)。
有没有更好的办法?
编辑
作为对 cmets 的回应,(我也将此作为对答案的回应):
在大多数情况下,我不会删除任何表格,它们将保留用于历史目的。正如我在对一个回复的评论中发布的那样,这个想法是为了减少小客户(一个只有 10,000 条记录)查询他们自己的历史记录的时间。大约有 1000 名客户,平均每件有 1,000,000 行(并且还在增长)。如果我将所有记录添加到一个表中,我将在该表中拥有近十亿条记录。我还以为我在为未来做计划,因为当我们有 5000 名客户时,我们没有一张巨大的桌子来保存所有交易记录(这可能是我的想法错误)。那么,像我这样划分记录是不是更好呢?我应该把它们全部捣碎成一张桌子吗?客户 ID 上的索引是否会防止为较小的客户查询数据时出现延迟?
【问题讨论】:
-
听起来好像您正在根据获得的客户创建表,如果是这种情况,那么您的数据库设计不完善。
-
我敢打赌你有各种疯狂的动态查询。我会推荐一个定义 ID、区域、名称等的客户表,然后是一个使用该客户 ID 和所有数据的事务表。然后,您可以使用 WHERE CustomerID=@x 和 ...编写查询。这是一个更好的设计
标签: sql sql-server sql-server-2000