我有一个简单的查询:
SELECT Description, Temp1, Temp2, SensorData.DateAndTime
FROM SensorData
INNER Join Sensors on Sensors.ChipId=SensorData.RockID
WHERE SensorData.Id in (Select max(Id) LastRecord
From SensorData
Group by RockId)
ORDER BY DhtTemp;
需要 3 秒。如果我删除内部选择查询并将其替换为查询结果,则需要 0.1 秒。如果我单独运行内部查询需要 0.1 秒。如果我删除连接到传感器,它会在 0.5 秒内运行(这很好。)有什么建议吗?我在 INT 的 Id 列上有索引。
最佳答案
Sensors
表中的
ChipId
用于连接条件,内部选择查询中的RockId
为group by
列name,你试过索引这个列吗?
另外尝试这个查询:
SELECT Description, Temp1, Temp2, myData.DateAndTime
FROM
(SELECT *,max(id) as mymax FROM SensorData
Group by RockId
Order by id desc
) as myData
INNER Join Sensors on Sensors.ChipId= myData.RockID
WHERE SensorData.Id = mydata.mymax
ORDER BY DhtTemp;
关于mysql - 缓慢的 mysql 查询(使用 IN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42320664/