欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQLSQL优化最佳实践和建议

程序员文章站 2022-03-03 19:37:19
...
总结一下项目中经常使用的MySQL SQL优化最佳实践

1.IN查询包含的值不应过多
建议最多不超过5个,虽然MySQL对于IN做了相应的优化——IN中的常量全部存储在一个数组里面,并对这个数组进行排好序。但是如果数值较多,产生的消耗也是比较大的。
对于in(1,2,3) 这样连续的数值,可以使用between或者使用连接来替换。

2. SELECT语句务必指明字段名称
3. 当只需要一条数据的时候,使用limit 1
这样可以使得EXPLAIN中的type列达到const类型
4. 如果排序字段没有用到索引,就尽量少排序
5. 如果限制条件中其他字段没有索引,尽量少用or
很多时候使用 union all 或者是union(必要的时候)的方式来代替“or”会得到更好的效果
6. 尽量用union all代替union
union和union all的差异主要是前者需要将结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的CPU运算,加大资源消耗及延迟。 union all的前提条件是两个结果集没有重复数据。
7. 区分in和exists, not in和not exists
区分in和exists主要是造成了驱动顺序的改变,如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。所以IN适合于外表大而内表小的情况EXISTS适合于外表小而内表大的情况。关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。