DataColumn, DataColumn, DateColumn
我们经常通过日期将数据放入表中。
所以一切看起来都很棒,但后来我想:当表中有一百万或十亿行时会发生什么?我应该按日期分手吗?这样查询性能永远不会降低?人们如何处理这类事情?
答案 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 计算机。
答案 5 :(得分:0)
如果我理解你的问题是正确的,那么你有一张包含一些数据和日期的表格。你的问题是 - 如果每年制作一张新桌子,我会看到改善的表现。这样,查询永远不会需要查看超过一年的数据。
这是错误的。相反,您应该将日期字段设置为索引。如果它是索引,服务器将能够为您提供所需的性能增益。
如果你不这样做,你的程序的逻辑就会变得疯狂并最终使你的系统变慢。
保持简单。
(注意 - 您可以使用一些高级分区功能,但如果需要,可以在以后进行分层 - 您不太可能需要这些功能,但简单设计应该能够在需要时迁移到它们。)