另一个查询下的备用SQL查询可以更快地执行

时间:2017-03-10 09:02:55

标签: sql

我有这个SQL查询:

UPDATE [FXdb].[dbo].[Record] 
SET [Trust_Balance]  = (
(SELECT [Bid]
 FROM [FX].[dbo].[FX_Rate]
 WHERE [FX].[dbo].[FX_Rate].[CCY1]= (SELECT [CCY]
                                     FROM [FXdb].[dbo].[Balance]
                                     WHERE SUBSTRING([FXdb].[dbo].[Balance].[CLINO], PATINDEX('%[^0]%', [FXdb].[dbo].[Balance].[CLINO]+'.'), LEN([FXdb].[dbo].[Balance].[CLINO]))=SUBSTRING(RIGHT([FXdb].[dbo].[Record].[Client_Account_Number], LEN([FXdb].[dbo].[Record].[Client_Account_Number]) - 1), PATINDEX('%[^0]%', RIGHT([FXdb].[dbo].[Record].[Client_Account_Number], LEN([FXdb].[dbo].[Record].[Client_Account_Number]) - 1)+'.'), LEN(RIGHT([FXdb].[dbo].[Record].[Client_Account_Number], LEN([FXdb].[dbo].[Record].[Client_Account_Number]) - 1)))))
* 
(SELECT [TRUST] FROM [FXdb].[dbo].[Balance]
 WHERE SUBSTRING([FXdb].[dbo].[Balance].[CLINO], PATINDEX('%[^0]%', [FXdb].[dbo].[Balance].[CLINO]+'.'), LEN([FXdb].[dbo].[Balance].[CLINO]))=SUBSTRING(RIGHT([FXdb].[dbo].[Record].[Client_Account_Number], LEN([FXdb].[dbo].[Record].[Client_Account_Number]) - 1), PATINDEX('%[^0]%', RIGHT([FXdb].[dbo].[Record].[Client_Account_Number], LEN([FXdb].[dbo].[Record].[Client_Account_Number]) - 1)+'.'), LEN(RIGHT([FXdb].[dbo].[Record].[Client_Account_Number], LEN([FXdb].[dbo].[Record].[Client_Account_Number]) - 1)))))

我得到的是我想得到的,这是根据货币汇率计算的新金额。但我的问题是需要太长时间,确切地说是50分钟,因为表格有很多记录,因此完整的结果。 有没有其他方法可以优化它以实现更快的结果?

谢谢。

0 个答案:

没有答案