将大表拆分为某些表和跨表查询

时间:2014-02-17 04:24:40

标签: sql-server

我有一个SQL Server 2008 R2企业版,它拥有一个数据库, 除了一张大桌子(博客表)之外,它本身几乎没有任何东西。 该表是1亿多行(35列),每天增加约200,000行。我们需要所有数据都“在线”, 并且大多数列都需要以某种方式搜索。

我想按月将表拆分成一些小表。例如:

table1  :1/1/2013-1/31/2013
table2  :2/1/2013-2/28/2013
table3  :3/1/2013-3/31/2013
table4  :4/1/2013-4/29/2013
.....
table12 :12/1/2013-12/31/2013

假设用户在2个月(1个博客条目),4个月(2个博客条目),10个月(5个博客条目)发布一些博客条目 ,11个月(没有博客条目)和12个月(没有博客条目)

有一项要求:

假设当前日期是2013年12月20日。为了获得有关此用户的最近10篇博客文章,我必须联合所有12个表

我认为这种设计效率低下。如果是这样的话?怎么设计?谢谢!

1 个答案:

答案 0 :(得分:1)

您可能希望更多地使用Partitioned Table and Index Concepts

  

分区使大型表或索引更易于管理,因为   分区使您可以快速管理和访问数据子集   并且有效地保持数据收集的完整性。

SQL Server内置了此功能,因此请勿尝试自行管理。

另请参阅Designing Partitioned Tables and Indexes

请不要那样

  

分区表和索引仅在Enterprise上可用,   SQL Server的开发人员和评估版。

但在你的情况下会没事的。