0
수백만 개의 큰 테이블을 비교하여 차이점을 로그 테이블에 삽입해야합니다.큰 일괄 처리로 실행합니다.
문제는 저장 프로 시저가 커지고 (LDF) 데이터베이스 디스크 공간이 제한된다는 것입니다.
나는 커밋은 LDF를 MDF에 쓰는 것을 알고있다.
다음 비교를 일괄 적으로 수행하고 수십만 줄을 커밋 할 수 있습니까?
BEGIN TRY
BEGIN TRANSACTION;
INSERT INTO dbo.CustomerLog
(OnlineStore ,
PhoneNumber ,
ChangeType
)
SELECT 'Online Store a' ,
AreaCode + PhoneNumber ,
'Added'
FROM dbo.StoreAList a
WHERE NOT EXISTS (SELECT 1
FROM dbo.StoreAListCompare b
WHERE (b.AreaCode + b.PhoneNumber) = (a.AreaCode
+ a.PhoneNumber));
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH;
CREATE TABLE [dbo].[StoreAList](
[ListID] [bigint] IDENTITY(1,1) NOT NULL,
[AreaCode] [char](3) NOT NULL,
[PhoneNumber] [char](7) NOT NULL,
[RecordDate] [datetime] NULL CONSTRAINT [DF_StoreAList_RecordDate] DEFAULT (getdate())
) ON [PRIMARY]
CREATE TABLE [dnc].[StoreAListCompare](
[ListID] [BIGINT] IDENTITY(1,1) NOT NULL,
[AreaCode] [CHAR](3) NOT NULL,
[PhoneNumber] [CHAR](7) NOT NULL,
[RecordDate] [DATETIME] NULL DEFAULT (GETDATE())
) ON [PRIMARY]
다음과 같이 : _single_ 인덱스 p로 StoreAList 및 StoreAListCompare를 인덱싱하면 성능 변화가 궁금합니다. er 테이블에'AreaCode'와'PhoneNumber'를 포함하고 있다면'where'를 변경하여 필드를 따로 비교하십시오. – HABO
예, 색인이 있지만 문제는 성능이 아닌 로그입니다. –