数据库:ids应该是顺序的吗?

时间:2016-01-29 15:30:44

标签: sql sql-server database

我想使用id作为我的表的主键。在每个记录中,我也存储来自其他来源的id,但这些id绝不是顺序的。

我是否应该使用" new"添加一个(自动递增的)列ID? id的查询尽可能快,这一点非常重要。

一些信息:

  • 我的表格内容仅存储在"临时",表格经常被清除(TRUNCATE),而不是填充新内容。
  • 这是一个sql-server 2008
  • 将内容写入表后,我为id列
  • 创建了一个索引

谢谢!

3 个答案:

答案 0 :(得分:5)

只要您确定提供的ID是唯一的,就不需要创建另一个(代理)ID作为主键。

答案 1 :(得分:2)

在大多数情况下,现有ID的索引应该足够了。通过将其声明为主键,可以使速度稍快一些。

根据您的描述,新的ID不是性能所必需的。如果你确实添加一个,那么表格会略大一些,这会对性能产生(非常小的)负面影响。

如果现有的id不是数字(或不是整数),那么使用更有效的索引类型可能会有一点小小的好处。但是,最好的办法是将现有的id作为主键(尽管这可能会影响负载性能)。

注意:我通常更喜欢合成主键,因此这个答案非常适合您的问题。

答案 2 :(得分:-2)

如果您追求速度,我会将两个ID一起加入(从应用程序或存储过程中),然后将它们放在一列中