mysql选择每个用户最近日期的行 - 使其更快

时间:2017-02-28 20:44:05

标签: mysql sql database

我表中的

记录如下:

email

我希望使用此

获取最新记录
id    |sensor_id|val  |audit_date
255245|        1|22.12|2017-02-18 08:26:47

需要一秒钟以上;没有最后“在哪里” - 第二和第二。 “id”是主键,现在是索引。 我可以做些什么来加快这个问题?

2 个答案:

答案 0 :(得分:0)

此查询使用max()功能

返回最新的输入记录
SELECT t1.sensor_id,val,t1.audit_date 
FROM `tests` t1
JOIN (SELECT max(`audit_date`) as audit_date, max(`sensor_id`) as max_sensor_id 
FROM `tests` group by `sensor_id`) t2
ON t2.max_sensor_id = t1.sensor_id
AND t2.audit_date =t1.audit_date

答案 1 :(得分:0)

您可以尝试自我排除加入更快:

SELECT t1.sensor_id, t1.val, t1.audit_date
FROM audit t1
  LEFT JOIN audit t2
  ON t1.sensor_id = t2.sensor_id
  AND t2.audit_date > t1.audit_date 
where 
  t2.id is null

基本上就是说每个audit_date没有更大sensor_id s的返回记录。