如果在item_spec表中只建立item_id索引,耗时反而大增?
问题描述:
获取商品折扣价sql中,如果只建立item_id索引,耗时会大大增加。比不增加任何索引的情况下要多很多,我在想虽然group by没有办法使用索引,但是只有item_id索引也应该会优化点时间吧,有点蒙
相关代码:
SELECT item_id,MIN(price_discount) AS price_discount FROM items_spec AS spec GROUP BY item_id
尝试过的解决方式:
通过explain语句查看两种状况的区别,一个是index,另一个是range,并group by时使用了索引,另外也对比了两种状况的OPTIMIZER_TRACE文件,也看不出来具体的原因。
相关截图:
20
收起
正在回答
1回答
你看看几种情况下,rows一列的值就知道为什么了。
从结果可知,关键就在using index for group by这一行哈,这表示使用了松散索引扫描。
没用松散索引扫描时,预估要扫描529575行,用松散索引扫描时,只扫描了167行。
至于松散索引扫描的作用,可以复习下课程group by语句优化一节。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星