C#/MVCアプリケーションのSQLサーバーにレコードを挿入する効率的な方法を探しています。誰もが最良の方法が何であるか知っていますか?
通常、私はwhileループと挿入ステートメントを実行しましたが、処理するレコードがそれほど多くありませんでした。約50万を挿入する必要があり、whileループを使用して1分間に300行で、一日中ここにいます。
私がやっていることは、大きな保持テーブルをループし、その行を使用して別のテーブルにレコードを作成することです。新しいテーブルに必要なルックアップデータ用の関数をいくつか設定しましたが、これは間違いなくドレインに追加されます。
これが私が持っているクエリです。大量のデータに対しては非常に非効率的です。
Declare @HoldingID int
Set @HoldingID = (Select min(HoldingID) From HoldingTable)
While @JourneyHoldingID IS NOT NULL
Begin
Insert Into Journeys (DepartureID, ArrivalID, ProviderID, JourneyNumber, Active)
Select
dbo.GetHubIDFromName(StartHubName),
dbo.GetHubIDFromName(EndHubName),
dbo.GetBusIDFromName(CompanyName),
JourneyNo, 1
From Holding
Where HoldingID = @HoldingID
Set @HoldingID = (Select MIN(HoldingID) From Holding Where HoldingID > @HoldingID)
End
セットベースのアプローチについて聞いたことがあります-上記の問題に役立つ可能性のあるものはありますか?