如果在item_spec表中只建立item_id索引,耗时反而大增?

如果在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文件,也看不出来具体的原因。


相关截图:

http://img1.sycdn.imooc.com//climg/5feda1530966105e07860703.jpg

http://img1.sycdn.imooc.com//climg/5feda15309fe4e8316530398.jpg


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你看看几种情况下,rows一列的值就知道为什么了。

http://img1.sycdn.imooc.com//climg/5feda1530966105e07860703.jpg

从结果可知,关键就在using index for group by这一行哈,这表示使用了松散索引扫描。

没用松散索引扫描时,预估要扫描529575行,用松散索引扫描时,只扫描了167行。


至于松散索引扫描的作用,可以复习下课程group by语句优化一节。


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师