Процедура хранения для удаления огромных записей
То, что я пытаюсь сделать здесь, - это удалить 7 миллионов записей.
Так как его огромное количество записей я пытаюсь удалить
небольшие куски данных (условие, что мы только собираемся удалить
те записи, которые старше последних 6 месяцев) за один раз.
Что может быть лучшим способом его реализации?
Что я уже пробовал:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE spDeleteRecord @DeleteBatchSize INT, @DelayTime DATETIME AS BEGIN SET NOCOUNT ON; DECLARE @DeleteRowCount INT SET @DeleteRowCount = 1 DECLARE @createDate DATETIME; DECLARE DelteteRecords_Cursor CURSOR FOR SELECT TOP(@DeleteBatchSize) CreateDate FROM [StoreSystems].[dbo].[tblDept]---------------- Table from which records has to be deleted --WHERE CreateDate <= DATEADD(month, -6, GETDATE()) --order by CreateDate desc; OPEN DelteteRecords_Cursor; --FETCH FROM DelteteRecords_Cursor FETCH FROM DelteteRecords_Cursor INTO @createDate; WHILE (@@FETCH_STATUS <> -1) BEGIN IF (@createDate <= DATEADD(month, -6, GETDATE())) BEGIN DELETE FROM [tblDept] ---- Table Name WHERE CURRENT OF DelteteRecords_Cursor; END END CLOSE DelteteRecords_Cursor; DEALLOCATE DelteteRecords_Cursor; --SET @DeleteRowCount = @@ROWCOUNT; --PRINT @DeleteRowCount; END GO
Richard Deeming
Репост
Это по существу тот же самый вопрос, который вы задавали ранее:
http://www.codeproject.com/Questions/1131829/Is-it-possible-to-pass-schema-name-and-table-name[^]
Зачем беспокоиться о том, чтобы задать вопрос, если вы просто собираетесь игнорировать ответы?!