mysql - 缓慢的 mysql 查询(使用 IN)

标签 mysql performance

我有一个简单的查询:

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 用于连接条件,内部选择查询中的RockIdgroup 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/

相关文章:

mysql - 自连接-当我尝试进行自连接时,我的查询显示匹配和不匹配的值

asp.net - 有人有比较经典 ASP 与 ASP.NET 2.0 或 3.5 的基准/速度测试吗?

android - 缓慢上传到正在运行的 Android 模拟器

php - 为什么主键重复

mysql - 每周表的正确结构和索引

php - 调用 php 通过 ID 删除 mysql 行的按钮

java - LWJGL 2.9.0 GL20.glUniformMatrix4 导致随机卡顿

mysql - 具有多个条件和子选择的 SQL 查询

performance - 如何优化这个 OpenCL Sobel 滤波器内核?

swift - 您应该使用外部文件来存储大数据吗?