mysql优化

1.读表的时候,尽可能的避免全表扫描,根据合理的业务需求,在where和orderby上面建立索引
2.尽量避免在where中使用!=或者<>,否则存储引擎将放弃索引走全表扫描
3.尽量避免where语句中对null值进行判断,否则也会导致存储引擎放弃索引走全表扫描,可以使用0代替判断,前提是字段不能为null
4.尽量避免在where语句中使用or品阶,可以使用union all代替
5.尽量不适用like做检索,可以使用全文检索来代替
6.尽量不适用in或者not in,避免全表扫描,如果是连续的数字,可以使用between 来代替
7.尽量避免语句中对字段进行函数操作
8.尽量避免大事务操作,提高系统并发能力
9.避免select * 等操作
10.sql语句中的in包含的值不应过多
11.只需要查询一条数据的时候,使用limit 1
12.如果排序字段没有用到索引,就尽量少排序
13.查询结果集太大,可以使用分段查询
14.隐式类型转换,(where子句中出现cloumn字段的类型和传入的参数类型不一致发生的类型转换,建议先确定where中的参数类型)
15.使用join查询,尽量使用inner join(参与联合查询的表至少为2张表,一般都存在大小之分。如果连接方式是inner join,在没有其他过滤条件的情况下MySQL会自动选择小表作为驱动表,但是left join在驱动表的选择上遵循的是左边驱动右边的原则,即left join左边的表名为驱动表)

16.做mysql优化,善用explain来查看sql执行计划,重点关注:
type:连接类型,一个好的sql语句至少达到range级别,避免出现all全表扫描
key:使用到的索引名,如果没有使用索引,值是null
key_len:索引的长度
rows:扫描的行数,该值是个预估值
extra:详细说明。注意,常见的不太友好的值,如下:Using filesort,Using temporary


 

posted @ 2022-08-12 17:05  -韩  阅读(12)  评论(0编辑  收藏  举报