2011-06-20 6 views

答えて

14

答えに含まれる細かい点JNKに加えて、私が見た1つの特定のキラーは、参照されているテーブルから1つ以上の外部キー制約についての行を削除するときです。参照テーブルは索引付けされません。削除を受け入れる前に、これらの各表の表スキャンを実行する必要があります。

+1

関連するテーブルのインデックスには、外部キーのインデックスがありませんでした。それにより削除が遅くなりました。外部キー列の関連するすべての表に索引が作成され、削除には0秒かかりました。 –

+0

うん、私たちの問題のすべての違いをしたインデックスを追加します。しかし皮肉なことに、単に "UPDATE STATISTICS [tableName]"を実行していました。試すだけの価値があります。 –

7

これは、あなたが削除されたどのように多くの行...について

を私たちに教えていない多くの要因に依存するように起こっていますか?もっと多くの行は明らかに時間がかかることを意味します。

他のインデックスはありますか?クラスタ化されたインデックスだけでなく、すべてのインデックスを更新する必要があります。 10個のインデックスから削除する場合は、約10倍の時間がかかります(大まかに)。

他のアクティビティはありますか?更新や挿入が行われている場合は、待機と競合が発生する可能性が非常に高いです。

また、非常に一般的に言えば、操作に要する秒数は、ハードウェアの設定に応じてHIGHLYになります。これをデスクトップマシンと高性能アレイと12コアのサーバーで実行した場合の期待は非常に異なっています。

+2

トリガーを忘れないでください... – gbn

0

また、バッチでデータを削除してみてください。例

set rowcount 10000 
delete [table] where id = ? 
while @@rowcount >0 
begin 
delete [table] where id = ? 
end 
+1

これは、テーブル/インデックスのロック時間と競合を減らすことで並行性を向上させます。それはおそらくパフォーマンスを向上させることはありません。 – Yuck

関連する問題