sql-server - 数据库设计: one huge table or separate tables?

标签 sql-server sql-server-2008 database-design data-warehouse

目前我正在设计一个供我们公司使用的数据库。我们使用的是 SQL Server 2008。该数据库将保存从多个客户收集的数据。该数据库的目标是获取多个客户的汇总基准数据。

最近,我开始担心一张 table 会变得非常大。每个客户大约有 20,000,000 行数据,数据库中很快就会有 30 个客户(如果不是更多的话)。很多查询都会在这张表上进行。我已经注意到性能问题并且用户被暂时锁定。

我的问题是,我们将来是否能够处理这个表,或者是否最好将该表拆分为每个客户的更小的表?

<小时/>

更新:距离我们第一次创建表格已经过去了大约半年的时间。按照下面的建议,我创建了一些巨大的表。从那时起,我就experimenting with indexes并决定在前两列(医院代码和部门代码)上使用聚集索引,如果我们有企业版,我们将在该索引上对表进行分区。正如 Galwegian 预测的那样,这种设置直到最近都运行良好,但性能问题不断出现。重建索引需要很长时间,用户互相锁定,查询经常花费比应有的时间更长的时间,对于大多数查询来说,首先将数据的相关部分复制到临时表中,在临时表上创建索引并运行询问。这不应该是这样的。因此,我们正在考虑购买企业版来使用分区表。如果购买无法完成我打算使用workaround to accomplish partitioning in Standard Edition .

最佳答案

从一张大表开始,然后在适当的情况下应用 2008 的表分区功能(如果性能成为问题)。

关于sql-server - 数据库设计: one huge table or separate tables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766334/

相关文章:

mysql - SQL group by (?) 查询未按要求返回

sql-server - 如何在 SQL-Server 中创建一个只能访问一张表并且只能插入行的用户

sql - 如何从查询中获得 NULL 而不是无值

SQL 服务器 2008 : N small databases VS 1 database with N schemas

sql - 登录失败。用户 'NT AUTHORITY\NETWORK 登录失败

sql - 如何根据每天的日常设备使用情况对 id 进行分割

c# - 从表中均匀分配行

sql - 不将查询存储为字符串的动态数据透视查询

mysql - 从 mysql 查询大数据的替代方法

database - 我应该什么时候使用 Datomic?