gpt4 book ai didi

sql - 经典 SQL Server 操作

转载 作者:行者123 更新时间:2023-12-04 18:27:47 24 4
gpt4 key购买 nike

我假设这是每个使用 SQL Server 的人最常见的情况。

设想:

我有这些表tabSRC_A(id,date,data1) , tabSRC_B(id,Date,data2)tabDEST
现在我的任务是从 tableSRC_A 获取数据, tableSRC_B对它们应用一些过滤和清理并将它们插入tabDEST .

我正在使用以下代码执行此操作

insert into tabDest(id, Date, Data1, Data2)
Select id, date, Data1, Data2
from tabSRC_A A
inner join tabSRC_B B on A.id = B.id and A.date = B.date
where not exists
(select * from tabDest Dest
where Dest.id = B.id and Dest.date = B.date)

如果已经存在,我正在更新

这是此操作的最佳解决方案吗?

每个表的大小为 1000 万行

我也在考虑使用代理键创建一个 View 并根据 id 执行检查,而不是使用上述方法检查每一行

像这样的东西
 insert into tabDest(id, Date, Data1, Data2)
Select id, date, Data1, Data2
from view_Created_From_TabA_TabB_adding_a_SurrogateKey_Kid SV
where SV.Kid > select (max(id) from tabDest)

我假设这会快得多。

如果您有任何建议,请指导我。

(我使用的是 SQL Server 2000,我知道它很老了)

最佳答案

您是否尝试过左连接来检测不存在?

insert into tabDest(id, Date, Data1, Data2)
Select id, date, Data1, Data2
from tabSRC_A A
inner join tabSRC_B B on A.id = B.id and A.date = B.date
LEFT JOIN tabDest Dest
ON Dest.id = B.id and Dest.date = B.date
WHERE
Dest.id is null

关于sql - 经典 SQL Server 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5516108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com