0
以下の理由でT-SQLがブロックを作成して実行に時間がかかるのはなぜですか?SQL ServerのDELETEによって引き起こされるブロッキングの問題を解決する方法
declare @StartDate date
declare @EndDate date
set @StartDate='08/01/2016'
set @EndDate='12/30/2016'
WHILE @StartDate<= @EndDate
BEGIN
BEGIN TRANSACTION
print ' Clean up date ' + convert(varchar, @StartDate, 101)
DELETE FROM [SAMPLEDB].[dbo].[MYTABLE]
WHERE CONVERT(DATE, CREATE_DATE, 101) = @StartDate
COMMIT TRANSACTION
SET @StartDate = DATEADD(DAY, 1, @StartDate);
END
ループを使用しているため、これは遅くなります。なぜあなたはここにループが必要ですか?必要なときに150個の削除ステートメントを実行しています。 –
削除を実行するには、他のレコードがレコードを編集してからシステムが待機する必要がある場合は、各レコードをロックする必要があります。ロックされたレコードを毎回チェックする必要があります。大量に削除すると、チェックは1回発生し、セット全体でロックが達成されると削除されます。したがって、毎日待つのではなく、1回待つ。 – xQbert