MySQL调优
选择合适的存储引擎
- 读操作多 :MyISAM
- 写操作多 :InnoDB
创建索引
在select、where、order by常涉及到的字段建立索引
SQL语句的优化
- where子句中不使用
!=
,否则放弃索引全表扫描 - 尽量避免
NULL
值判断,否则放弃索引全表扫描
# 优化前
select number from t1 where number is null;
# 优化后
select number from t1 where number=0;
- 尽量避免
or
连接条件,否则放弃索引全表扫描
# 优化前
select id from t1 where id=10 or id=20 or id=30;
# 优化后
select id from t1 where id=10
union all
select id from t1 where id=20
union all
select id from t1 where id=30;
- 模糊查询尽量避免使用前置
%
,否则全表扫描 - 尽量避免使用
in
和not in
,否则全表扫描
# 优化前
select id from t1 where id in(1,2,3,4);
# 优化后
select id from t1 where id between 1 and 4;
- 尽量避免使用
select * ...;
用具体字段代替*
,不要返回用不到的任何字段
网友评论