【发布时间】:2020-08-11 10:40:43
【问题描述】:
我有一个包含这些列的表格“元素”:
- id(主键)
- ref_id(对另一个表的引用)
- 时间(添加行的时间)
- value(给定 ref_id 在给定时间的值)
我需要获取每个 ref_id 的最后一个值和时间。
目前我为 a 中的每个 ref_id 查询谁返回正确的结果:
SELECT time, value
FROM element
WHERE ref_id = <ID>
AND time = (SELECT max(time) FROM element WHERE ref_id = <ID>)
但是,执行多个查询需要很长时间(查询大约需要 1 秒)。我正在寻找对所有 ref_id 进行唯一查询以尝试加快整体时间。
有可能吗?
谢谢,
【问题讨论】:
-
你能打印一下这个查询的解释计划吗?有多种可能的解决方案,从添加索引到在每个元素与其最大值之间建立连接,以及 - 添加 max 的分析函数可能是一个有效的解决方案:oracle-base.com/articles/misc/min-and-max-analytic-functions
-
您好,感谢您帮助我。我添加了一个完成这项工作的索引。
标签: sql