用非顺序GUID开始在表中添加顺序GUID是否存在性能问题

时间:2020-03-06 10:29:39

标签: sql sql-server indexing

我有一些具有主键uniqueidentifier类型的表,并添加了非顺序ID,现在我只想开始在此表中仅添加顺序ID。 guid生成在代码中。这是否有可能在先前数据的索引中产生问题。从逻辑上讲,我看不到任何问题,但是找不到关于这种情况的任何信息。

P.S这是旧项目。我无法将表中所有以前的主键更新为顺序键,因为没有外键关系,并且其他表中将开始出现不匹配的情况。

1 个答案:

答案 0 :(得分:2)

首先,我可以给你一个有根据的答案:

  • 如果您生成的第一个顺序guid大于表中插入的最后一个guid,则可以确保插入的其他顺序guid不会引起任何索引问题;因为它们是顺序的!为此,您可以通过将最后插入的非序列guid传递给Sequentialguid创建器方法,来解决该问题并为每个表创建第一个SequentialGuid,使其大于该表中最后插入的非序列guid。 您可以在此link中找到一个库,该库可让您创建一个以lastId作为基值的SequentialGuid。

  • 此外,请注意,可以在服务器重新启动的情况下修改顺序向导的顺序。因此,从这个角度来看,SequentialGuids是不可靠的。

最后,如果适用于您的情况,我建议您使用更好的解决方案:

  • 您可以通过添加标识整数字段作为聚簇索引来修改表,并将Guid字段保持为 BUT 作为非聚簇索引主键字段。
相关问题