mysql - 如何以最佳 SQL 性能获取最新值(value)

标签 mysql sql

我正在运行一个包含两列的表 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/

相关文章:

mysql - 如何将多个select语句合并到一个表中

mysql - 加快 MySQL 查询速度

sql - 从函数输出二维数组作为行和列

php - SQL 中的插入语句

sql - 使用带条件的内连接的 Doctrine 查询构建器

php - MySQL LOAD_FILE 返回 NULL

PHP 打开多个连接

mysql - 组合 SELECT 语句将库存 SKU 数组/列表连接到产品页面 SKU

mysql - SSIS 无法连接到任何指定的 MySQL 主机

java - Java 中具有某些约束的唯一 ID