2013-07-29 81 views
2

正如问题所述,使用NewSequentialID作为表的默认值与NewID()的缺点是什么?显而易见的优势是它不会像我们的索引一样碎片化。使用NewSequentialID有什么缺点吗?

是否有任何关于永远最大化序列的问题?

+2

很好的支持,一,它仍然比,比方说,一个INT一个很宽的关键。而且你失去了价值相对随机且不可预测的魅力之一。您有利于使用GUID(无论是否存在碎片),您有哪些优势? –

+1

如果您已经意识到int/big_int与GUID参数.....使用NewSequentialID的唯一“缺点”是某人可能会猜到一个GUID。就像,如果你有一个web应用说/EmployeeEdit.aspx?EmployeeKey=123,你的最终用户可能会“猜到”/EmployeeEdit.aspx?EmployeeKey=124。使用NewSequentialID ... – granadaCoder

+0

可以完成同样的事情。另一个主要优点是,您可以通过创建日期获得可靠性排序(如果这对您很重要),即使使用CreateDate列,您也可能无法获得可靠性排序。 –

回答

0

我不明白一个字段的默认值如何真的成为一个缺点。

如果您想在插入某些记录之前控制某些记录的ID,可以使用NEWID()而非默认的顺序ID(因此您可以在与数据库交互之前生成记录及其关联),以及您将不必在以后查询它以获取ID)。虽然两者并不相互排斥......

由于granadaCoder说,顺序编号可以推断,但IMO的好处是在性能和​​维护长期如此之大,这将是一个错误,不要使用它。

+0

你可以使用UuidCreateSequential来模拟“客户端”“顺序”标识符。正如Thomas所说,guid的好处在于你可以“联系”所有关联运送到数据库..... aka,您不必等待IDENTITY列返回它们的值以插入子(FK)记录。但是(如aaron-b所述)存在一些缺点。做出明智的选择。 – granadaCoder

0

newsequesntialid不受天青

+0

您可以为此声明添加支持链接吗? –

+0

请为此添加更多解释或证明。 – akshay

+1

http://social.msdn.microsoft.com/Forums/windowsazure/en-US/d73a7153-5476-44ca-a73f-e9b98ebf0764/newsequentialid-unsupported?forum=ssdsgetstarted – alexs

相关问题