sql—更新表中的20行非常慢

6fe3ivhb  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(586)

我不明白为什么只更新一个表中的21行要花这么多时间。
步骤1:我正在从stagintable创建#tentable(它的数据永远不会超过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'

第二步。更新最终表:

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有数百万行。。。
任何帮助都将不胜感激。谢谢!

d7v8vwbk

d7v8vwbk1#

如果只有30个匹配项,那么您需要一个索引 #temptable(ReportDate, DOB) :

create index idx_temptable_2 on #temptable(ReportDate, DOB);

相关问题