私のSQL Serverデータベースに奇妙な問題があります。 SqlBulkCopy.WriteToServer
を使用してバルクデータ(約90,000行)を書きました。また、EFのAddRange
を使用して、約30,000行を1,000バッチで書いています。バルク挿入時にインデックスが同期しなくなる
これにより、これらのテーブルのインデックスが同期しなくなり、クエリは通常よりも多くの時間がかかります(数秒後の結果ではなく10分後のタイムアウト)。
インデックスを手動で再構築した後、これらのインポートの別のものが発生するまで、クエリは再び高速になります。
バルクロードを理解すると、インデックスも更新する必要があります。 私の質問です:この動作はよく知られている理由はありますか?そうでない場合は、どうすればこの問題を起こすことができますか?
私の2つの考えはテーブル/インデックスと多分フラグメンテーションに関する統計ですが、それほど多くの断片化はありません。 – dfundako
@dfundakoご意見ありがとうございます。このコメントを少し拡大できますか?私はそれを実際にタスク/次のステップに翻訳することはできません。ありがとう。 –
私はそれをよりよく説明できるよりもはるかに賢い人:https://www.simple-talk.com/sql/performance/sql-server-statistics-questions-we-were-too-shy-to-ask/ – dfundako