SQL优化汇总

1、字段区分度不高的索引,批量操作时,条数少于10个时会走索引,大于10个不走索引,可以如下优化

    <select id="xxx" resultType="java.lang.Long">
        <foreach collection="list" item="item" separator="union all" >
            select id
            from table
            where  cost_bill_no = #{item}
        </foreach>
    </select>

2、使用min(),max()函数查询某字段时,可以使用order by 排序取limit 1
修改前:

SELECT MIN(year) FROM table WHERE company_id = 1 AND acc_status = 2  

修改后:已根据company_id ,year 简历组合索引

SELECT year FROM table WHERE company_id = 1 AND acc_status = 2 order by year limit 1   

3、limit影响优化器对索引的选择,对于一些没有走预期索引的SQL可以加limit调试

4、group by默认会根据字段排序,后面有order by字段时,可以把字段写在group by后

5、优化器是基于时间和成本综合代价选择索引

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容