SQL优化汇总

2022-08-27  本文已影响0人  一只弹窗仔

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、优化器是基于时间和成本综合代价选择索引

上一篇 下一篇

猜你喜欢

热点阅读