我有这个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分钟,因为表格有很多记录,因此完整的结果。 有没有其他方法可以优化它以实现更快的结果?
谢谢。