最近在看mysql的优化,就做了下笔记,就当给自己一次理论知识上的提升
1)数据库优化
通过不同的方式达到提高数据库性能的目的。
优化包括多个方面,比如查询速度、更新速度、mysql服务器性能等
2)优化查询效率
分析查询语句
desc 查询语句;
1)select_type:查询语句的类型。
simple 表示简单查询;
primary 表示主查询;
union 表示子查询。
2)table: 表示查询的表名。
3)type: 表示表的连接类型。
system 表示表中只有一条记录;
const 表示表中有多条记录,但只从中查询一条记录;
all 表示对表进行了完整的扫描;
eq_ref 表示多表连接时,后面的表使用了主键或唯一约束;
ref 表示使用了索引;
range 表示查询语句中给出了查询范围;
index 表示对表中的索引进行了完整的扫描;
4)possible_keys:表示表中可能使用的索引。
5)key: 表示查询使用到的索引。
6)key_len: 表示索引字段的长度。
7)ref: 表示使用哪个列与索引一起来查询。
8)rows: 表示查询的行数。
9)extra: 表示查询过程的附件信息。
3)添加索引优化查询
索引可以提高查询的速度,但是需要注意有些时候,索引并不会发挥作用:
1、如果查询中使用了like关键字,并且匹配字符第一个字符为'%'或者'_',则不会使用索引。
2、如果表中创建了多列索引,只有查询条件中使用了这些字段中的第一个字段是,才会使用索引。
4)优化插入效率
1、禁用索引
禁用:alter table 表名 disable keys;
开启:alter table 表名 enable keys;
2、禁用唯一性检查
禁用:set unique_checks=0;
开启:set unique_checks=1;
3、优化sql语句,批处理执行。