sql - 简单的 SQL 删除语句给出超时

标签 sql sql-server sql-server-2008 timeout

执行这个简单的 SQL 删除语句时,我从 SQL Server 收到超时消息:

DELETE FROM dbo.[User] WHERE Id = 95146

表中约有 95.000 条记录。

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

我也删除了我创建的所有统计信息,但也没有任何效果。

我还能做些什么来优化这一点?

亲切的问候, 大卫

最佳答案

您有多少个外键引用 UsersId 列,这些列上有索引吗?

如果级联设置为NO_ACTION,正如您所指出的,SQL Server 可能会花费时间对每个表执行全表扫描以确保没有引用到 Id 95146 - 我以前见过,如果其他表很大,那么一次很容易花费几分钟。

关于sql - 简单的 SQL 删除语句给出超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6858618/

相关文章:

mysql - 用上一行mysql的值填充空行

sql - 如何在Sql Server中通过Exec命令运行两条T-Sql语句?

mysql - 如何将自增id传递到另一个表中

sql-server - SQL查询获取每分钟的最后一条记录

sql-server - 如何将表移动到 MS SQL Server 中的另一个文件组?

sql - SQL 中棘手的分区

mysql - 使用 `type` 作为数据库列名

mysql - 为什么 MySQL (MariaDB) 使用以下查询计算记录数超过 3 分钟?

sql-server - SQL 命令使用 Invoke-SQLCMD 执行两次

c# - 不使用 'SqlDependency' 类监控数据库变化