我有一个带有这些列的表“ element”:
我需要获取每个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的唯一查询,以尝试加快总时间。
有可能吗?
谢谢
答案 0 :(得分:0)
使用相关子查询:
SELECT time, value
FROM element e
WHERE e.time = (SELECT MAX(e2.time) FROM element e2 WHERE e2.ref_id = e.ref_id);
大多数数据库都可以利用以下索引:element(ref_id, time desc)
。