mysql - Date = max(Date) 运行缓慢

标签 mysql sql

历史数据表中有大约 600 万条记录。我试图找到最后记录行不等于表中最高日期的所有符号。我相信这个查询会起作用,但需要永远运行。事实上,时间太长了,每次都会超时。有没有办法让这个查询运行得更快?

select symbol, histDate
from historical_data as a
where histDate =
    (select max(histDate)
     from historical_data as b
     where a.symbol = b.symbol);

最佳答案

您想要此查询的索引。最好的索引是historical_data(symbol, histdate)

您可能会发现将查询表述为更快:

select hd.*
from historical_data hd join
     (select symbol, max(histDate) as maxhd
      from historical_data
      group by symbol
     ) s
     on hd.histDate = s.histDate;

编辑:

哎呀。您的示例查询没有执行文本所说的操作。为此:

select symbol
from historical_data hd cross join
     (select max(histDate) as maxhd from historical_data) m
group by symbol, maxhd
having max(hd.histDate) <> maxhd;

关于mysql - Date = max(Date) 运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35261118/

相关文章:

Mysql 多条件查询

php - 我怎样才能创建成功返回函数?

MySQL CLI 客户端更改套接字位置

php - 尝试使用特定表中的 ID 列出数据

sql - 您在 SQL Server 中做什么来创建或更改?

php - MySQL 对一个表字段进行精确词存在检查

MySQL选择重复值中的一个字段

php - Firebird 上的外键问题

sql - 使用DAL2 : Value cannot be null.访问数据参数名称:con

javascript - 如何使用phpexcel和ajax导入excel文件?