MySQL 索引单表查询优化案例

分析语句:

EXPLAIN SELECT id, article_id FROM article WHERE category_id=1 AND comments>1 ORDER BY views DESC LIMIT 1;

创建三个字段的复合索引:

CREATE INDEX idx_article_ccv on article(category_id, comments, views);

1611506964157.png

MySQL 无法利用索引对后面的 views 进行查找或排序,即range类型查询字段后面的索引无效。


删除索引,重新创建两个字段的复合索引:

DROP INDEX idx_article_ccv ON article;
CREATE INDEX idx_article_cv on article(category_id, views);

1611507189409.png

类型变成了 ref ,并且无须使用文件排序。

你可能感兴趣的:(mysql)