首页 > mysql sql优化

mysql sql优化

table article{
    id:BIGINT(20)
    name:VARCHAR(20),
    state:TINYINT(1);//状态,0、正常,1、删除
    ...,
    is_top:TINYINT(1),//是否置顶
    theme:INT,//主题
}

有这样一个需求:
查询article列表,排序优先级,置顶、主题相同、id(从大到小)。

现在写的sql:

SELECT id
FROM article
WHERE state=0
ORDER BY is_top DESC,theme=1 DESC,id DESC LIMIT 0,10

查看执行计划

请教如何优化?


你这个查询没有条件过滤的吗?接近20W数据就这样查肯定有问题的呀!先把条件写上再看执行计划!


mysql尽量将其当做存储引擎来做,不要当做搜索引擎。

你的这个case尝试去做一些优化。
可以优化点
1:将置顶部分单独拎出来。用一个单独的sql去查置顶的article,这部分可以采用缓存,可以节省大量响应时间
2:id字段作为primary key
3:state字段添加index
4:theme字段添加index

通过上面优化步骤后,你再试试

【热门文章】
【热门文章】