Sql server SQL Server标识和顺序GUID-重复使用id值会弄乱页面文件

Sql server SQL Server标识和顺序GUID-重复使用id值会弄乱页面文件,sql-server,identity,uniqueidentifier,pagefile,Sql Server,Identity,Uniqueidentifier,Pagefile,如果我使用标识或顺序guid,并将它们作为主键,例如存储了100000行,然后删除其中一行并插入一个与删除的行具有相同Id值的新行,那么我想我会因为没有在页面文件中正确排序键而影响“性能”。这是正确的吗?如果,是否有“刷新”的方法。e、 g.通过运行DBCC DBREINDEX和/或更新统计信息?否。键始终保持有序,任何操作都不会扰乱键顺序 您可能听说过的是索引碎片,索引的逻辑顺序和物理顺序之间的差异过程。某些操作模式会导致更高的碎片,但删除一个键并用同一个键插回同一行不是这样的模式。可以通过索

如果我使用标识或顺序guid,并将它们作为主键,例如存储了100000行,然后删除其中一行并插入一个与删除的行具有相同Id值的新行,那么我想我会因为没有在页面文件中正确排序键而影响“性能”。这是正确的吗?如果,是否有“刷新”的方法。e、 g.通过运行
DBCC DBREINDEX
和/或
更新统计信息

否。键始终保持有序,任何操作都不会扰乱键顺序

您可能听说过的是索引碎片,索引的逻辑顺序和物理顺序之间的差异过程。某些操作模式会导致更高的碎片,但删除一个键并用同一个键插回同一行不是这样的模式。可以通过索引重组(
alterindex…resorganization
)或索引重建(
alterindex…rebuild
)消除碎片,请参阅。根据经验,你读到的关于索引碎片有多糟糕的一切都被大大夸大了


更新统计信息与密钥顺序和碎片无关。过时的统计数据还有其他原因,会导致不同的问题(基数估计错误),请参阅。

否。密钥始终保持有序,任何操作都不会扰乱密钥顺序

您可能听说过的是索引碎片,索引的逻辑顺序和物理顺序之间的差异过程。某些操作模式会导致更高的碎片,但删除一个键并用同一个键插回同一行不是这样的模式。可以通过索引重组(
alterindex…resorganization
)或索引重建(
alterindex…rebuild
)消除碎片,请参阅。根据经验,你读到的关于索引碎片有多糟糕的一切都被大大夸大了

更新统计信息与密钥顺序和碎片无关。过时的统计数据还有其他原因并导致不同的问题(基数估计错误),请参阅。

您可能会发现有用的

但“页面文件”的含义并不十分清楚。

您可能会发现它很有用


“页面文件”是什么意思还不太清楚。

谢谢,是的,我想的是索引碎片。因此,如果我删除第50000行并获取顺序guid值,然后在位置100001处插入一个具有此Id的新行,索引不会混乱,也不会失去从顺序guid中获得的性能?行没有“位置”,它们有键。如果删除带有键的行,然后重新插入具有相同键的行,则如果插入导致页面拆分,则可能会导致碎片(新行不适合被删除行留下的房间)。还有很多因素在起作用:事务边界、行版本控制、其他事务活动。键的类型与此场景完全无关,从这个角度来看,
uniqueidentifier
int
的行为是相同的。谢谢,是的,我正在考虑索引分段。因此,如果我删除第50000行并获取顺序guid值,然后在位置100001处插入一个具有此Id的新行,索引不会混乱,也不会失去从顺序guid中获得的性能?行没有“位置”,它们有键。如果删除带有键的行,然后重新插入具有相同键的行,则如果插入导致页面拆分,则可能会导致碎片(新行不适合被删除行留下的房间)。还有很多因素在起作用:事务边界、行版本控制、其他事务活动。键的类型与此场景完全无关,
uniqueidentifier
int
从这个角度来看行为相同。