ASP.NET MVC3アプリケーションを使用していて、バスの旅のデータベーステーブルがあり、バスの旅の開始日と終了日、および運行日が一覧表示されています。以下にスニペットを示します。
JourneyID StartDate EndDate Monday Tuesday Wednesday etc
676 02 Jan 2012 01 Mar 2012 True False True etc
696 02 Jan 2012 01 Mar 2012 False False True etc
650 02 Jan 2012 25 Mar 2012 True True True etc
したがって、2012年1月2日の日付が月曜日であり、月曜日がtrueに設定されている場合、その日に旅があります。
これらを実行する日ごとに新しいテーブル行に挿入しようとしているので、次のようになります。
JourneyID Date
676 02 Jan 2012
676 04 Jan 2012
696 04 Jan 2012
650 02 Jan 2012
650 03 Jan 2012
現在システム上にあるこれを行うためのクエリは非常に遅く、t-sqlでネストされたwhileループを使用します。C#にもバージョンがありましたが、それは少し遅くなりました-同様のプロセスを使用しましたが(ネストされたループプロセスを使用し、アイテムを保存して汎用リストに挿入し、次にそれらを一括挿入しました)
現在使用中のプロセスは、すべてのジャーニーをループし、各ジャーニー内で、開始日と終了日の間のすべての日付をループして、それが当たる日と、その日がtrueに設定されているかどうかを確認します。これは、実行に長い時間がかかる場合があります。
誰かがこの挿入を実行するためのより効率的な方法を考えることができますか?現在、1時間に約100,000回の移動をループできますが、数百万回の移動が発生する可能性があるため、時間がかかる可能性があります。