提供超时的简单SQL删除语句

dgi*_*oni 9 sql sql-server timeout sql-server-2008

执行这个简单的SQL Delete语句时,我从SQL Server获得超时:

DELETE FROM dbo.[User] WHERE Id = 95146
Run Code Online (Sandbox Code Playgroud)

表中有大约95.000条记录.

我认为这可能是因为表上的索引,所以我删除了除了主要密钥(Id)之外的所有内容,但这没有帮助.

我删除了我创建的所有统计信息,但也没有任何影响.

我还能做些什么来优化呢?

亲切的问候,大卫

Dam*_*ver 16

有多少外键引用了IdUsers,这些列上是否有索引?

如果将cascade设置为NO_ACTION,正如您所指出的那样,SQL Server必须花费时间来对每个表执行全表扫描,以确保没有对Id95146 的引用- 我已经看到这很容易花费几分钟在之前的时间,如果其他表很大.

  • 好吧,这就是原因。向这些外键添加索引后,超时消失了。感谢您的帮助 (3认同)