小编Dan*_*Dan的帖子

MySQL 使用 INDEX 使用 GROUP BY 优化 ORDER BY,除非您添加 JOIN

为什么不能查询#2使用相同的(car_trims.horsepower_peak)索引来优化行作为的排序查询#1?在只有两个查询之间的区别是增加的JOIN在查询#2。

car_trims ~50k 行

PK: (car_trims.id), 索引(car_trims.horsepower_peak)

car_makes ~100 行

PK: (car_makes.id)

查询#1

SELECT car_trims.*
FROM car_trims
GROUP BY car_trims.id
ORDER BY car_trims.horsepower_peak DESC
LIMIT 0, 200
Run Code Online (Sandbox Code Playgroud)

执行时间处理时间: .0026 seconds

解释: 查询 #1 解释

查询#2

SELECT car_trims.*
FROM car_trims
STRAIGHT_JOIN car_makes ON car_makes.id = car_trims.make_id
GROUP BY car_trims.id
ORDER BY car_trims.horsepower_peak DESC
LIMIT 0, 200
Run Code Online (Sandbox Code Playgroud)

执行时间处理时间: .2533 seconds

解释: 在此处输入图片说明

更新:

我一直在继续这方面的工作,我相信该指数没有被利用在查询#2,由于混合的GROUP BYORDER BY。根据 MySQL …

index join order-by mysql-5.7

5
推荐指数
1
解决办法
482
查看次数

标签 统计

index ×1

join ×1

mysql-5.7 ×1

order-by ×1