【发布时间】:2020-06-17 04:02:31
【问题描述】:
我需要从 suppTB 表更新 ordersTB 表上的 suppID 列。如下表:
suppTB
suppID ,suppName , itemID ,....
ordersTB
itemID, suppID(added later so mostly null's)...
更新此表的最有效方法是什么。我从旧 Q 的这里 (How can I do an UPDATE statement with JOIN in SQL?) 尝试了这个查询,但它执行了一天并且仍在运行
UPDATE ordersTB
SET A.suppID = B.suppID
FROM ordersTB as A
JOIN suppTB as B
ON A.itemID = B.itemID
WHERE A.suppID is null
我尝试过的其他笔记和事情:
- 两个表都很大(数千万)
- itemID 和 suppID 列已编入索引。我在更新之前删除了索引以使其更快。仍然需要很长时间。
- 还可以尝试 MERGE 查询。相同的结果..
【问题讨论】:
-
你确定你的 SQL 是正确的吗?你告诉它你想更新 ordersTB 但这个表/别名没有出现在 FROM 之后的查询部分中
-
你说得对,我在这里写的东西已经磨损了,我只是复制了正确的查询
-
发布您的计划输出。还要告诉我们,如果您将 `UPDATE...SET ...` 替换为 `SELECT * FROM,查询是否有效
-
这引出了一个问题——为什么在两个表中都保留
suppId?ItemId不足以识别每个项目的正确SuppId吗? -
#Caius:我的计划很简单,从另一个表更新表。在 db 可用后,我会尝试测试 SELECT 查询的建议(仍然取消长期更新查询)。 #Zohar:这些表上有更多的列依赖于它。我也需要以这种方式更新更多表格,所以我很好奇什么是有效的方法。如果这只有那些表和列你可能是对的!
标签: sql sql-server tsql join sql-update