想象一个简单的表格结构:
Table1 Table2
---------- ----------
ID<-------| ID
Name |-->Table1ID
Name
Table1
有几百万行记录(例如说 350 万)。我使用主键进行删除操作:
DELETE FROM Table1 WHERE ID = 100;
Table2
中没有引用ID = 100
的Table1
行,因此删除操作不会违反任何外键约束。
您认为这个删除操作需要多长时间?几毫秒?几百毫秒?一秒钟或更长时间?几秒钟?假设机器没有被拖慢,并且可以轻松处理请求。
现在我面临这样一个情况:此类删除操作需要大约700ms的时间。对我来说,这似乎太慢了。我想知道是否有人同意这个速度太慢,以及如何提高其速度的建议!
以下是实际执行计划:
(XML执行计划在此处: http://pastebin.com/q9hSMLi3)
聚集索引删除(81%)涉及到聚集PK、非聚集唯一索引和非聚集非唯一索引。
Table1
还是Table2
?如果Table2
有几百万行而且Table1ID
上没有索引,那么这可能会非常慢。 - Mike ChristensenTable1
有三百五十万行。 - Josh M.Table1
,对吗?我想知道为什么那部分需要这么长时间... - Mike Christensen