0

我正在运行一个包含两列的表 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,我怀疑这是一个优化的解决方案。

有没有更好的方法以更好的性能实现这一目标?

非常感谢!

4

1 回答 1

6

1)

SELECT value FROM A ORDER BY datetime DESC LIMIT 1 

2)

SELECT value FROM A 
   WHERE datetime > :start_time AND datetime < :finish_time 

而且(最重要的是!)你想要一个日期时间的索引。

于 2013-06-06T12:52:51.303 回答