単純なテーブル構造を想像してください。
Table1 Table2
---------- ----------
ID<-------| ID
Name |-->Table1ID
Name
Table1
数百万行あります(たとえば、350万行)。主キーによる削除を発行します。
DELETE FROM Table1 WHERE ID = 100;
Table2
で参照Table1
する行がないID = 100
ため、削除は外部キー制約に違反することなく機能します。
削除にはどのくらいの時間がかかると予想されますか? 数ミリ秒程度?数百ミリ秒?1秒以上?数秒?など、マシンが動かなくなっておらず、リクエストをすぐに処理できると仮定します。
現在、このような削除に約 700 ミリ秒かかる状況があります。私には、これは遅すぎるようです。私が基地から外れているのか、それとも他の人がこれが遅すぎることに同意するのか、そしてそれをより速くするのに役立つ推奨事項があるのか 興味があります!
実際の実行計画は次のとおりです。
(ここの XML 実行計画: http://pastebin.com/q9hSMLi3 )
クラスター化されたインデックスの削除 (81%) は、クラスター化された PK、非クラスター化の一意のインデックス、および非クラスター化の非一意のインデックスにヒットします。