gpt4 book ai didi

sql - 如何避免选择查询中的排序运算符

转载 作者:行者123 更新时间:2023-12-01 13:16:08 32 4
gpt4 key购买 nike

在我的 select 语句中,我有一个简单的子查询,它获取 ControlNo 中的最后一个 ExpirationDate

此子查询显着降低了性能。QuoteID 是表 tblQuotes 上的聚集索引

统计数据是最新的。

SELECT
ControlNo,
PolicyNumber,
(
SELECT TOP 1 Q.ExpirationDate
FROM tblQuotes Q
WHERE Q.ControlNo = tblQuotes.ControlNo
ORDER BY Q.QuoteID DESC
)
SUM(Premium) as Premium
FROM tblQuotes
GROUP BY ...

enter image description here

enter image description here

在这种情况下是否可以找到解决方法?

最佳答案

尝试替换子查询:

(     
SELECT TOP 1 Q.ExpirationDate
FROM tblQuotes Q
WHERE Q.ControlNo = tblQuotes.ControlNo
ORDER BY Q.QuoteID DESC
)

如果您正在寻找最大值,请使用 Windows 函数

MAX(ExpirationDate) OVER(PARTITION BY ControlNo)

如果您要按特定顺序查找第一个值,请使用:

FIRST_VALUE(ExpirationDate) OVER(PARTITION BY ControlNo ORDER BY QuoteID DESC)

关于sql - 如何避免选择查询中的排序运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54836920/

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