我希望获得最新的小时唯一条目
此查询为我提供了最新的唯一条目(但不是最后一小时):
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
)
答案 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)
(按此顺序)。