SqlServer 删除的性能优化

发布时间 2023-10-08 20:37:21作者: kongshu

SqlServer 删除的性能优化

最近遇到个SqlServer 删除性能的问题。假设我们有如下的表定义

Create Table Tree
(
  Id INT,
  Name NVARCHAR(MAX),
  ParentId INT,
  PRIMARY KEY (Id),
  FOREIGN KEY (ParentId) REFERENCES Tree(Id)
)

当我们Tree 表的数据量比较大的时候,我们删除其中的某些记录时,会有性能问题。原因是由于这个FK,每次删除的时候都会去扫描整个表,确保依赖删除项的记录也得删除掉。

解决办法

  • 移除这个FK 的定义
  • 创建一个Index 包含这个ParentId