Sql server SQL server标识或自行计算的序列

Sql server SQL server标识或自行计算的序列,sql-server,tsql,database-design,Sql Server,Tsql,Database Design,我正在设计一个数据库。我想在表主键字段上定义一个自动序列。最好的解决方案是什么 我知道我可以为字段启用identity属性,但它有一些问题(例如重新启动时种子跳转和不成功事件) 我还可以使用一些计算序列。例如,我可以计算字段值的最大值,并在递增后将其用作新插入记录的键 哪一个更好?还有别的解决办法吗 在我看来,有3种选择: 标识-最简单,但在服务器重新启动时可能有间隙等 序列-分离对象,在回滚时仍有间隙 一个单独的数字表-你不会有差距,但它可能是一个热点,可能会导致阻塞 在我看来,有3种选择:

我正在设计一个数据库。我想在表主键字段上定义一个自动序列。最好的解决方案是什么

我知道我可以为字段启用identity属性,但它有一些问题(例如重新启动时种子跳转和不成功事件)

我还可以使用一些计算序列。例如,我可以计算字段值的最大值,并在递增后将其用作新插入记录的键


哪一个更好?还有别的解决办法吗

在我看来,有3种选择:

  • 标识-最简单,但在服务器重新启动时可能有间隙等
  • 序列-分离对象,在回滚时仍有间隙
  • 一个单独的数字表-你不会有差距,但它可能是一个热点,可能会导致阻塞

  • 在我看来,有3种选择:

  • 标识-最简单,但在服务器重新启动时可能有间隙等
  • 序列-分离对象,在回滚时仍有间隙
  • 一个单独的数字表-你不会有差距,但它可能是一个热点,可能会导致阻塞

  • 在我看来,有3种选择:

  • 标识-最简单,但在服务器重新启动时可能有间隙等
  • 序列-分离对象,在回滚时仍有间隙
  • 一个单独的数字表-你不会有差距,但它可能是一个热点,可能会导致阻塞

  • 在我看来,有3种选择:

  • 标识-最简单,但在服务器重新启动时可能有间隙等
  • 序列-分离对象,在回滚时仍有间隙
  • 一个单独的数字表-你不会有差距,但它可能是一个热点,可能会导致阻塞

  • 很好的简洁回答。序列仅在Sql server 2012中引入,因此它可能不是OP的选项。滚动他自己的序列/标识很容易出现效率低下和/或唯一性问题(即选择max(IdCol)+1…),我认为使用标识并与可能的差距共存是最好的解决方案。如果需要“无间隙唯一升序序号”列,我将使用“持久计算”列。回答很好。回答很简洁。序列只是在Sql server 2012中引入的,所以它可能不是OP的选项。滚动他自己的序列/标识容易出现效率低下和/或唯一性问题(即选择max(IdCol)+1…),我想说,使用一个标识并只考虑可能存在的差距是最好的解决方案。如果需要“无间隙唯一升序序号”列,我将使用“持久计算”列。回答很好。回答很简洁。序列只是在Sql server 2012中引入的,所以它可能不是OP的选项。滚动他自己的序列/标识容易出现效率低下和/或唯一性问题(即选择max(IdCol)+1…),我想说,使用一个标识并只考虑可能存在的差距是最好的解决方案。如果需要“无间隙唯一升序序号”列,我将使用“持久计算”列。回答很好。回答很简洁。序列只是在Sql server 2012中引入的,所以它可能不是OP的选项。滚动他自己的序列/标识容易出现效率低下和/或唯一性问题(即选择max(IdCol)+1…),我想说,使用一个标识并只考虑可能存在的差距是最好的解决方案。如果需要“无间隙唯一升序序号”列,我将使用“持久计算”列。回答得很好。这取决于你的实际需求。这取决于你的实际需求。这取决于你的实际需求。这取决于你的实际需求。