時々多くの行を追加しなければならないテーブルが 2 つあります。最後のケースは、テーブル 1 に 800000 行、テーブル 2 に 3 倍以上ありました。
テーブルに自動IDフィールドがあり、外部キー関係があることを考慮して、一括コピーを使用する方法がわからないため、次のストアドプロシージャを使用して行を挿入します。
CREATE PROCEDURE dbo.AddOrderBookEntry
@Moment datetime,
@LocalTime datetime,
@BB decimal(18,4),
@BO decimal(18,4),
@QBB float,
@QBO float,
@SumTr float = NULL,
@QSumTr float = NULL,
@IV float = NULL,
@InstrumentId bigint,
@AverageValues Averages READONLY
AS
BEGIN
INSERT INTO dbo.OrderBook
VALUES (@Moment,@LocalTime,@BB,@BO,@QBB,@QBO,@SumTr,@QSumTr,@IV,@InstrumentId)
DECLARE @OBID bigint
SELECT @OBID = SCOPE_IDENTITY()
INSERT INTO dbo.OrderbookAverages
select N, BN, [ON], @OBID from @AverageValues
END
GO
動作しますが、気になるのは速度です。私の測定によると、レコードが追加されるまでに app 1.75 ミリ秒かかります。データを db に書き込む .net アプリケーションの速度を測定しています。このアプリケーションは、SQL Server と同じコンピューター上にあります。
質問は、この速度は私が使用するアプローチで大丈夫ですか? それとも改善できますか?