这种表结构的最具可扩展性的设计是什么

时间:2011-05-12 19:36:35

标签: sql sql-server sql-server-2005 database-design

DataColumn, DataColumn, DateColumn

我们经常通过日期将数据放入表中。

所以一切看起来都很棒,但后来我想:当表中有一百万或十亿行时会发生什么?我应该按日期分手吗?这样查询性能永远不会降低?人们如何处理这类事情?

6 个答案:

答案 0 :(得分:3)

您可以使用以SQL 2K5开头的分区表:Partitioned Tables

通过这种方式,您可以将逻辑设计保持纯净,同时将旧数据移动到不同的文件组中。

答案 1 :(得分:2)

您不应因数据而破坏表格。相反,您应该担心索引,规范化等问题。

<强>更新

更深入的解释。假设你有一张包含一百万条记录的表格。如果[DateColumn]上有不同的日期,那么最大的盟友将是与[DateColumn]一起使用的索引。然后,确保您的查询始终至少按[DateColumn]进行过滤。

这样,你会没事的。

答案 2 :(得分:0)

这很容易被认为是过早优化,这在db设计恕我直言中很难实现,因为优化在数据建模中应该更接近表面。

但您需要做的就是在DateColumn字段上创建索引。索引实际上是一种比任何类型的表拆分/拆分更好的性能解决方案,并保持您的设计,因此您的所有编程都更简单。 (如果有帮助的话,你可以决定使用不会影响你设计的分区。)

答案 3 :(得分:0)

听起来你可以使用历史表。如果您主要要查询当前日期的数据,那么将旧数据迁移到历史记录表,主表不会增长太多。

答案 4 :(得分:0)

  

当表和索引变得非常时   大,分区可以帮助   将数据划分为更小的,   更易于管理的部分。

     

Microsoft SQL Server 2005允许您   基于的分区表   使用特定数据使用模式   定义的范围或列表。 SQL Server   2005年还提供了众多选择   长期管理   分区表和索引由   增加了围绕设计的功能   新表和索引结构。

     

此外,如果存在大表   在具有多个CPU的系统上,   分区表可以导致   通过并行提高性能   操作。

     

您可能需要考虑   以下:在SQL Server 2005中,   相关表格(如订单和   OrderDetails表)   分区为相同的分区   键和相同的分区功能   据说是一致的。当。。。的时候   优化器检测到两个分区   和对齐的表连接,SQL   Server 2005可以加入那些数据   首先驻留在相同的分区上   然后结合结果。这个   允许SQL Server 2005更多   有效地使用多CPU   计算机。


了解Partitioned Tables and Indexes in SQL Server 2005

答案 5 :(得分:0)

如果我理解你的问题是正确的,那么你有一张包含一些数据和日期的表格。你的问题是 - 如果每年制作一张新桌子,我会看到改善的表现。这样,查询永远不会需要查看超过一年的数据。

这是错误的。相反,您应该将日期字段设置为索引。如果它是索引,服务器将能够为您提供所需的性能增益。

如果你不这样做,你的程序的逻辑就会变得疯狂并最终使你的系统变慢。

保持简单。

(注意 - 您可以使用一些高级分区功能,但如果需要,可以在以后进行分层 - 您不太可能需要这些功能,但简单设计应该能够在需要时迁移到它们。)