2009-10-15 61 views
0

當通過其PrimaryKey從表中刪除行時,我獲得了大約44472個邏輯讀取。現在表中有5-6個子表,它們將ForeignKeys鏈接到我想從中刪除的表的PK。大量單行刪除的「邏輯讀取」

我不知道該怎麼做才能提高刪除的性能。

有什麼建議嗎?

編輯: 我添加了queryplan爲刪除

http://img384.imageshack.us/img384/6255/deleteexecutionplan.png

編輯: 我找到了解決方案(不知道這是否是理想的解決方案) - 這是在響應波紋管。

+0

該執行計劃在OrderDetails和其他兩個小表上顯示錶掃描。在該表上是否有自引用的FK,在非索引列中是否爲FK?如果您共享表和相關表的模式以及實際的執行計劃(使用.xml格式),則更容易明確原因是什麼... – KristoferA 2009-10-15 10:49:56

回答

0

This answer解決了這個問題,現在刪除工作就像一個魅力。我不確定是否有任何缺點我應該知道。

0

查看單行刪除的query plan

我想你會發現表掃描正在對一個或多個「子」表進行。如果是這樣,考慮在該子表上放置一個ForeignKey的索引。

(否則請將查詢計劃添加到您的問題中)

0

您是否有FK限制?

我能想到的選項是

  • 添加索引的FK列在子表。
  • 刪除約束(這可能會導致孤行)。
  • 嘗試減少子表的數量。