SQLテーブルでのINSERTには、さまざまな理由で時間がかかることがあります。
- テーブル上のINSERT TRIGGERの存在
- チェックする必要のある強制された制約の多く(通常は外部キー)
- テーブルの中央に行が挿入されると、クラスター化インデックスでページが分割される
- 関連するすべての非クラスター化インデックスを更新する
- テーブル上の他のアクティビティからのブロック
- 不十分なIO書き込み応答時間
- ...私が見逃したものは何ですか?
特定のケースでどちらが責任があるのかをどのように確認できますか?ページ分割と非クラスター化インデックスの更新と他のすべての影響を測定するにはどうすればよいですか?
(一時テーブルから)一度に約10,000行を挿入するストアドプロシージャがあり、1万行につき約90秒かかります。他のspidがタイムアウトするので、これは受け入れられないほど遅いです。
実行計画を確認しました。INSERTCLUSTERED INDEXタスクとFKルックアップからのすべてのINDEX SEEKSを確認しましたが、なぜ時間がかかるのか確かではありません。トリガーはありませんが、テーブルには少数のFKey(適切にインデックス付けされているように見える)があります。
これはSQL 2000データベースです。