SQL PK单行删除很慢

SQL Delete a single row by PK is very slow

在我们的应用程序中,我们可以撤消刚刚创建的任务的创建。 例如,我们将发出以下删除:

delete from task where taskid = 290313

这很慢,最多可能需要 30 秒才能执行。

几十个table都有Task的外键,TaskId在所有的里面都有索引。

查看执行计划,我可以看到许多读取索引中所有记录的索引扫描(非搜索)。

为什么使用完整的索引扫描而不是查找?

我在 Azure SQL 数据库最新版本。

[编辑]

任务索引 table:

此处查询计划:https://www.brentozar.com/pastetheplan/?id=SJtzfNyp7

这是实时查询统计的结果,我们清楚地看到索引扫描损失的时间:

我删除并重新创建了所有没有级联删除的外键。 现在执行计划正在使用高效的 Index Seeks 来检查所有 FK 上的 RI。

不确定为什么启用级联删除会导致这些索引扫描...