执行这个简单的 SQL 删除语句时,我从 SQL Server 收到超时消息:
DELETE FROM dbo.[User] WHERE Id = 95146
表中约有 95.000 条记录。
我认为这可能是因为表上的索引,所以我删除了除了聚集的主键(Id)之外的所有内容,但这没有帮助。
我也删除了我创建的所有统计信息,但也没有任何效果。
我还能做些什么来优化这一点?
亲切的问候, 大卫
最佳答案
您有多少个外键引用 Users
的 Id
列,这些列上有索引吗?
如果级联设置为NO_ACTION
,正如您所指出的,SQL Server 可能会花费时间对每个表执行全表扫描以确保没有引用到 Id
95146 - 我以前见过,如果其他表很大,那么一次很容易花费几分钟。
关于sql - 简单的 SQL 删除语句给出超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6858618/