主键在短时间内存储大量数据

时间:2009-08-25 13:52:40

标签: sql-server tsql primary-key

我对如何为临时存储错误消息创建表格表示怀疑。

  1. 大量插入和删除
  2. 作为外键的GUID,可能是外部加入
  3. ErrorMessage的简单nvarchar字段
  4. 我应该使用哪个主键(如果有)和索引在短时间内存储大量数据?

    由于

2 个答案:

答案 0 :(得分:2)

我不同意Jay的观点 - 请查看Kim Tripp的The Clustered Index Debate continues

除此之外,她说拥有良好主要/群集密钥(在INT IDENTITY列上 - NOT GUID列)实际上会加快您的插入和删除。

因此,即使您只在短时间内使用您的表,建议使用TableID INT IDENTITY(1,1) PRIMARY KEY列来获得良好,快速的主键和聚簇索引,以及尽可能少的其他索引(因为那些肯定会减慢插入速度)。

根据您将GUID列作为外键引用的频率,您可能还需要在其中添加索引 - 因为它会加快查找速度。

如果你正在批量加载大量数据(说:一次成千上万行),你也可以考虑在加载之前删除该索引并在加载数据后重新创建它(这可能会比一直使用它更快 - 但是再次:这取决于你加载的数据量,以及频率。

马克

答案 1 :(得分:0)

我会在你的GUID外国ID字段上放一个索引,因为你将根据它查找错误。 至于主键。您没有提到强制需要主键的要求。这只会增加一些额外的开销。 但是,您可能需要进行排序,为此您需要一个数字字段或日期字段。我建议只需在表中添加一个数字字段,这样就可以根据创建的订单错误消息进行排序。但您可能不需要将该字段设为主要字段,因为数据不会持续很长时间。