Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用第一个值函数进行SQL更新需要很长时间_Sql_Sql Server - Fatal编程技术网

使用第一个值函数进行SQL更新需要很长时间

使用第一个值函数进行SQL更新需要很长时间,sql,sql-server,Sql,Sql Server,我有两张桌子,第一张桌子和第二张桌子。他们在不同的数据库,然后我想做一些更新 UPDATE KYCFBHK.KYCFBHK.KYCCUST SET KYC_SP_08= (SELECT DISTINCT FIRST_VALUE(KYC_SP_08) over (partition by CUSTNO order by DATE desc) FROM AMLETL.dbo.FINACLE_TEMP_in_kyc1 t1 WHERE CUSTNO collate Latin1_General_

我有两张桌子,第一张桌子和第二张桌子。他们在不同的数据库,然后我想做一些更新

UPDATE  KYCFBHK.KYCFBHK.KYCCUST
SET KYC_SP_08=
(SELECT DISTINCT FIRST_VALUE(KYC_SP_08) over (partition by CUSTNO order by DATE desc) FROM AMLETL.dbo.FINACLE_TEMP_in_kyc1 t1 

WHERE CUSTNO collate Latin1_General_BIN2 = KUNDNR AND HISTBIS ='9999')

WHERE HISTBIS = '9999'
子查询“Select First_value”在10秒内返回结果,但在我进行更新时返回结果。花了12个小时,但仍未完成。我们能减少跑步时间吗?
我们的数据库管理系统是MSSQL Server 2016。在这些表中,我们还有索引。

它与下面的查询一起工作:

update T1
SET T1.KYC_SP_08=T2.Kyc_sp_08 
from KYCFBHK.KYCFBHK.KYCCUST T1 
Inner join AMLETL.dbo.FINACLE_TEMP_in_kyc1 T2
ON T2.CUSTNO  COLLATE Latin1_General_BIN2 = T1.KUNDNR
And T1.HISTBIS=9999
And T2.Date in (select max(date) from AMLETL.dbo.FINACLE_TEMP_in_kyc1)

你为什么不把这个问题分解一下,看看出了什么问题。我建议从kyc1 t1中的AMLETL.dbo.FINACLE_TEMP_运行
选择不同的第一个值(KYC_SP_08)(按客户订单按日期描述划分),其中客户核对拉丁1_General_BIN2=KUNDNR
,并检查执行计划或估计执行计划。它可能会给你一个指示,什么是消耗时间。另外,我经常做的一个很好的练习是从AMLETL.dbo.FINACLE_TEMP_in_kyc1中选择一个新表,并在该表上尝试上面的查询(不带索引等),在该查询上使用DTA查找缺少的索引等。示例数据和所需结果将非常有用。我们的目的是用正确的数据更新表中的一列,而上次的值不正确。顺便说一句,我们已经更改为更新和使用内部连接代替。然后只花了50秒就更新了所有