优化评论分页查询_第1张图片

possible_keys、key、key_len都为null,可见在表上是没有可用索引的

计算区分度,越接近1区分度越好,应该放到联合索引的左侧

建好联合索引之后的explain:

image.png




翻页越多,速度越慢,进一步优化:

优化评论分页查询_第2张图片

优化的前提:comment_id是商品评论表的主键,且有覆盖索引

原理:

        利用覆盖索引,取出主键comment_id,再进行排序,取出所需数据,之后再同评论表通过主键来排序,取出其他字段。这种方式的数据开销是:索引的io + 索引分页后的结果,也就是这15行数据对应表的io,比优化前的io节省很多。优点在于:每次翻页消耗的资源和时间基本相同。

适应场景:

        当查询和排序字段,也就是where子句和order by子句涉及的字段有对应覆盖索引的情况下。并且中间结果集很大的时候也适应这种情况