大家好我有以下的SQL Server 2008腳本,將檢查一行是否已經存在於Table A
,並且它不插入數據從Table B
。更好的方法來檢查數據是否已經存在,並插入
這工作很好,直到Table A
開始填滿大量的數據。我們目前在這張表中有3000萬行,這將繼續增長到預計的7000萬行。
如果這個過程花費太長時間並影響其他過程,則會出現問題。只是想知道是否有更好的方法來檢查表中是否存在一行。只需添加,這一切都是使用SSIS完成的。
腳本:
INSERT INTO TABLE A ([recordID],Field 1, Field2, Field 3, Field 4, Field 5)
SELECT
[TABLE B].[recordID],[TABLE B].[Field 1], [TABLE B].[Field2],
[TABLE B].[Field 3], [TABLE B].[Field 4], [TABLE B].[Field 5]
FROM TABLE B AS TABLE B
LEFT OUTER JOIN TABLE A AS TABLE A ON [TABLE B].[recordID] = [TABLE A].[recordID]
WHERE [TABLE A].[recordID] IS NULL
請確保正確的非聚簇索引到位 - 最值得注意的是在'表A'和'表B'中的'RecordID'列(因爲這是在您的JOIN條件下) –
我已經有一個RecordID索引在表A和表B上。但是我已經把它們設置爲集羣,它們應該是非集羣嗎? –