最新小时唯一条目MySQL

时间:2015-12-01 20:42:11

标签: mysql database performance

我希望获得最新的小时唯一条目

此查询为我提供了最新的唯一条目(但不是最后一小时):

SELECT t1.* FROM allSensors t1
  JOIN (SELECT uniqueID, MAX(timestamp) timestamp FROM allSensors GROUP BY uniqueID) t2
    ON t1.uniqueID = t2.uniqueID AND t1.timestamp = t2.timestamp;

此查询为我提供了最新的小时条目(但并非所有条目都是唯一的):

SELECT * FROM allSensors WHERE timeStamp > DATE_SUB(NOW(), INTERVAL 1 HOUR);

我怎样才能获得最新的小时最新报道? 我怎么能以最大的性能完成这个? 这将每5秒钟一次!表格全部都是

这是表结构:

CREATE TABLE `allSensors` (
  `timeStamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `DeviceID` double DEFAULT NULL,
  `UniqueID` double NOT NULL DEFAULT '0',
  `DataAge` double DEFAULT NULL,
  `Temp` double DEFAULT NULL,
  `Light` double DEFAULT NULL,
  `Humid` double DEFAULT NULL,
  `LeafTemp` double DEFAULT NULL,
  `SoilHumid` double DEFAULT NULL,
  `SoilEC` double DEFAULT NULL,
  `Batt` double DEFAULT NULL,
  `SNR` double DEFAULT NULL,
  `Ts` double DEFAULT NULL
)

1 个答案:

答案 0 :(得分:0)

SELECT  t1.*
    FROM  allSensors t1
    JOIN  
      ( SELECT  uniqueID, MAX(timestamp) timestamp
            FROM  allSensors
            GROUP BY  uniqueID
      ) t2 ON t2.uniqueID = t1.uniqueID
         AND  t2.timestamp = t1.timestamp;
    WHERE     t2.timestamp > NOW() - INTERVAL 1 HOUR

也就是说,获取所有最后的ID,然后扔掉那些太旧的ID。

您需要复合INDEX(uniqueID, timestamp)(按此顺序)。