我正在运行一个包含两列的表 A:日期时间和值。 A表很大,里面有几千万条数据。
在我的 SQL 语句中(在 mysql dialet 中),我想
1) 获取最新值(具有最新日期时间的值)
2) 取一个时间范围内的值
我目前的解决方案
1)
SELECT value
FROM A
WHERE datetime = (
SELECT MAX(datetime)
FROM A
ORDER BY datetime
);
2)
SELECT value
FROM A
WHERE datetime IN (
SELECT datetime
FROM A
WHERE datetime > start_time AND datetime < finish_time
);
但是,由于内部 SELECT,我怀疑这是一个优化的解决方案。
是否有更好的方法来实现更好的性能?
非常感谢!
最佳答案
1)
SELECT value FROM A ORDER BY datetime DESC LIMIT 1
2)
SELECT value FROM A
WHERE datetime > :start_time AND datetime < :finish_time
并且(最重要的是!)您需要一个关于日期时间的索引。
关于mysql - 如何以最佳 SQL 性能获取最新值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962575/