如何高效地检索单个SQL表中每组的最大值?
优化 SQL 查询以实现每组的最大值检索
使用大型 SQL 表时,高效的数据检索至关重要。 一项常见任务涉及识别特定行组内的最大值。 本文演示了优化的 SQL 查询来有效地实现这一点,避免多次表扫描。
让我们考虑一个包含 SCORES
、ID
和 ROUND
列的 SCORE
表。目标是获得每个 ROUND
及其对应的 ID
的最大值 SCORE
。 涉及迭代处理的低效方法不适合大型数据集。
以下查询使用窗口函数和 DISTINCT
以获得最佳性能:
SELECT DISTINCT id ,max(round) OVER (PARTITION BY id) AS round ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score FROM SCORES WHERE id IN (1,2,3) ORDER BY id;
登录后复制
此方法采用窗口函数来计算每个 ROUND
组内的最大值 SCORE
和相应的 ID
。然后,DISTINCT
子句会删除重复的行,确保仅返回每个 ROUND
中最高的 ID
。与多个表扫描相比,这显着减少了处理时间。
另一种同样有效的方法使用 FIRST_VALUE
两次:
SELECT DISTINCT id ,first_value(round) OVER (PARTITION BY id ORDER BY round DESC) AS round ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score FROM SCORES WHERE id IN (1,2,3) ORDER BY id;
登录后复制
两个查询产生相同的结果:
ID | ROUND | SCORE |
---|---|---|
1 | 3 | 2 |
2 | 2 | 12 |
3 | 1 | 6 |
这些优化的查询通过在单个表扫描中检索每组的最大值,比效率较低的方法提供了显着的性能改进。 这对于处理大型数据集时保持响应能力至关重要。
以上是如何高效地检索单个SQL表中每组的最大值?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在 Linux 中运行 MySQl(有/没有带有 phpmyadmin 的 podman 容器)

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么?
