单表索引优化分析

我们拿一个例子来分析,这样一个表
单表索引优化分析_第1张图片
需求:查询category_id为1且comments大于1的情况下,views最多的article_id。
SQL语句:select id,author_id from article where category_id=1 and comments>1 order by views desc limit1;
要求分析出要做的索引。
不做索引时,我们explain上面的SQL语句,情况是:
在这里插入图片描述
可以看到问题在于type的值为ALL和Extra的值为Using filesort
那么我们可以尝试建立索引:idx_article_ccv(category_id,comments,views),再次explain,情况是:
在这里插入图片描述
这次的问题在于Extra的值为Using filesort,因为comments字段是范围值而不是具体的值,而且comments在中间无法出问题会影响views也跟着出问题。

解决方式,去掉上面的索引,新建索引idx_article_cv(category_id,views),结果是:
在这里插入图片描述
这样的索引便没有问题。

你可能感兴趣的:(MySQL高级,mysql,索引,数据库)