我不明白为什么只更新表中的 21 行需要这么多时间。
第 1 步:我从 StagingTable 创建#tempTable(它的数据永远不会超过 20 行)
CREATE TABLE #tmpTable (
ID INT NULL,
UniqueID INT NULL,
ReportDate VARCHAR(15) NULL,
DOB Datetime NULL,
Weight VARCHAR(15) NULL,
Height VARCHAR(15) NULL)
INSERT INTO #tempTable (
ID,
UniqueID,
ReportDate,
DOB,
Weight,
Height)
SELECT
A.ID,
A.UniqueID,
A.ReportDate,
A.DOB,
A.Weight,
A.Height
FROM [testDB].[StagingTable] as A
WHERE A.UniqueID = '12345'
第 2 步:更新 FinalTable:
UPDATE [Customers].[FinalTable]
SET ID = B.ID,
UniqueID = B.UniqueID,
ReportDate = B.ReportDate,
DOB = B.DOB,
Weight = B.Weight,
Height = B.Height
FROM #tempTable AS B
WHERE [Customers].[FinalTable].[ReportDate] = B.ReportDate
AND [Customers].[FinalTable].[DOB] = B.DOB
此查询需要 30 多分钟! 有什么办法可以加快这个更新过程吗?有什么想法我可能做错了什么吗?
我只是想补充一点,FinalTable 有数百万行...
任何帮助将不胜感激。 谢谢!
最佳答案
如果只有 30 个匹配项,那么您需要在 #temptable(ReportDate, DOB)
上建立索引:
create index idx_temptable_2 on #temptable(ReportDate, DOB);
关于sql - 更新表中的 20 行确实很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63001562/