gpt4 book ai didi

通过连接改进 SQL 子选择?

转载 作者:行者123 更新时间:2023-11-29 12:22:51 25 4
gpt4 key购买 nike

如何改进以下查询,因为我认为我遗漏了一些东西并且可以做得更好:(我有表 A 和一个从 A 到 B 的一对多表我想要来自 A 的一些信息和来自 B 的行,该行链接到具有最高序列号的 A。我想到了这个:

SELECT A.*, 
(
SELECT B.value
FROM B
WHERE A.idB = B.id
ORDER BY B.seqNr DESC LIMIT 1
)
FROM A

性能对我来说很重要,所以这是我最好的选择吗?

最佳答案

这可能是您最好的选择,尤其是当您只访问 A 和 B 中的少数行时。

如果无论如何都要覆盖所有行,您可以尝试通过窗口聚合将行号分配给 B 中的行来解决问题:

SELECT * FROM (
SELECT A.*, B.*, ROW_NUMBER() OVER(PARTITION BY B.id ORDER BY B.seqNr DESC) AS seqidx
FROM A JOIN B ON A.idB = B.id
) WHERE seqidx = 1

虽然这将使用大量临时空间...考虑仅从聚合中获取 A 和 B 主键并稍后重新加入它们(从您的查询中不清楚您的 pkey 列是什么,因为 B. id 显然不是)

关于通过连接改进 SQL 子选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5239772/

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