使用Order By、Group By和一百万行优化MySql

使用Order By、Group By和一百万行优化MySql,mysql,Mysql,TestApp数据: 实例id INT 产品标识SMALLINT 安装\u id INT 数据\u id SMALLINT 数据值变量字符(255) 数据值整数 时间戳 索引(安装id) 索引(安装id、数据值数量) 测试安装: 产品标识SMALLINT 安装\u id INT 主要(产品标识、安装标识) 解释输出 id select_type table type possible_keys key key_len ref rows Extra -------------

TestApp数据:
实例id INT
产品标识SMALLINT
安装\u id INT
数据\u id SMALLINT
数据值变量字符(255)
数据值整数
时间戳
索引(安装id)
索引(安装id、数据值数量)

测试安装:
产品标识SMALLINT
安装\u id INT
主要(产品标识、安装标识)

解释输出

id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra  
------------------------------------------------------------------------------
1 SIMPLE TestAppData ALL NULL NULL NULL NULL 360000 Using temporary; Using filesort 
1 SIMPLE TestAppInstallations index NULL PRIMARY 6 NULL 20000 Using index 
通过上面的表,mysql查询并解释输出。查询速度非常慢,因为速度太慢,我没有让它完成。有100多万行

我尝试了安装id和数据id上的索引,但没有帮助。我承认我不太清楚我需要什么样的索引

我还能做些什么来让这一切可行吗


编辑:对不起,1000000行,不是表。

我颠倒了连接顺序,查询进行得飞快。因此,与其将数据表连接到安装表,不如现在将数据表连接到安装表

SELECT TestAppInstallations.installation_id, TestAppData.data_value_num AS num1
FROM TestAppInstallations
LEFT JOIN TestAppData ON TestAppInstallations.installation_id = TestAppData.installation_id
AND TestAppData.data_id =1
GROUP BY TestAppInstallations.installation_id
ORDER BY TestAppData.data_value_num DESC 
LIMIT 0 , 20

100万张桌子?是的,MySQL并不是这样运行的……还有:让您的代码4空间保留格式并将其显示为代码块。您想得到什么?为什么是左联您是否在不使用任何聚合函数的情况下使用GROUP BY来获取不同的值?请左键连接,因为某些安装ID将显示在安装表中,而不是数据表中。并分组,因为某些安装将具有我不需要的多个数据值。
SELECT TestAppInstallations.installation_id, TestAppData.data_value_num AS num1
FROM TestAppInstallations
LEFT JOIN TestAppData ON TestAppInstallations.installation_id = TestAppData.installation_id
AND TestAppData.data_id =1
GROUP BY TestAppInstallations.installation_id
ORDER BY TestAppData.data_value_num DESC 
LIMIT 0 , 20