大家好我拥有以下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
答案 0 :(得分:3)
答案 1 :(得分:3)
不确定这是否会更快,但值得一试:
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
where b.recordID not in
(select recordID from A)
答案 2 :(得分:0)