![]() |
1
4
NewSequentialID主要是在表由唯一标识符聚集时解决页面碎片问题。您的表由整型列聚集。我设置了两个测试表,一个测试表中newsequentialid列是主键,另一个测试表中不是主键(和您的一样),在主键中,guid总是连续的。另一方面,他们没有。 我不知道内部/技术原因 为什么? 它的行为是这样的,但似乎很明显,newSequentialID()只在表被它聚集时才真正是连续的。否则,它的行为类似于newid()/rowguid。 另外,我很好奇为什么不必使用newsequentialid()。它有许多缺点,newid()没有,而且没有任何好处——最大的缺点是newid()实际上不可预测,而newsequentialid()是。如果你不担心碎片化,有什么意义? |
![]() |
2
4
这些值实际上是按照 the definition newSequentialID()的:
它没有说guid中不能有任何间隙,只是任何新的guid都应该大于前一个guid。 试试这个:
如您所见,记录的顺序是1、2、3,这与预期的一样。 |
![]() |
3
2
它们是连续的!
77<8F<9B!!!!您必须看到最高值的byets,而不是最低值(从右到左) |
![]() |
4
0
我不熟悉newSequentialID(),对于唯一标识符类型,我调用newID()。 |
![]() |
5
0
肯定会有差距的
(2和3在这方面与identity()相似)
例如,给定2个表使用
此外,在插入失败的情况下,newSequentialID()不会返回到序列,例如
|
![]() |
6
0
newsequentialguid(因为每个guid的生成方式保证它们的顺序)包括通过时间戳计算的guid的一部分。因此,如果您在不同的时间运行插入,您将看到一些间隙。 但重要的是,guid的“排序”方式不会导致页面拆分(如果在索引中使用guid),这就是使用新的顺序guid时所发生的情况。 |
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |