有一条SQL语句执行比较慢,在并发情况下存在瓶颈:
|
|
这张表的数据量在60w左右,查看这张表的执行计划:
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | t | NULL | ALL | NULL | NULL | NULL | NULL | 608731 | 100 | Using temporary |
可以看到使用了全表扫描和临时表。
根据MySQL GROUP BY优化的要义,对此次查询的3个字段做联合索引:
|
|
再看执行计划:
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | t | NULL | range | query_max | query_max | 497 | NULL | 5854 | 100 | Using index for group-by |
在Extra可以看到Using index for group-by
,说明使用了优化。
对比之前的查询速度有了显著提升 2秒244毫秒 -> 17毫秒。
评论