gpt4 book ai didi

SQL 性能调优 - 更新查询

转载 作者:行者123 更新时间:2023-12-04 16:09:23 25 4
gpt4 key购买 nike

在下面的更新查询中,我有两个子查询。除了它选择的列(ColumnA,ColumnB)之外,两者都是相同的。单个子查询提供超过 100,000 条记录,将从中选择第一行。

但是存在性能问题,因为可以将两个子查询合并为一个查询。

如何结合。

UPDATE TABLE1 SET 
LOWEST_RATE = (SELECT TOP 1 ColumnA from Table2 WHERE Table2.Currency = Table1.Currency),
DIFF_RATE = (SELECT TOP 1 ColumnB from Table2 WHERE Table2.Currency = Table1.Currency)

最佳答案

使用可更新的 CTE 和 row_number() 为每种货币获取一行:

;with x as (
select Currency, ColumnA, ColumnB,
row_number() over(partition by Currency order by ...) as rn
from Table1
),
y as (
select t1.*, t2.*
from Table1 t1
join x t2 on t1.currency = t2.currency and t2.rn = 1
)
update y
set
lowest_rate = ColumnA,
diff_rate = ColumnB

如果您真的不介意表 2 中的哪一行,请使用任何列而不是 ...

关于SQL 性能调优 - 更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com