Mysql性能优化分为硬件和软件,硬件就暂时不写了,还没到那个地步
一、优化查询
1、 学会分析查询语句。登录客户端后explain [sql语句]\G,这样就可以给你一个详细的评价,包括使用索引没。
2、 必须清楚索引对查询速度的影响,如果不使用所用,查询语句将查询表中的所有记录,即每行都要检测。
3、 使用索引查询需注意一下几点,意识查询的时候使用like的话,记住通配符要放在后面,即第一个不能是通配符%。如果查询的时候使用多列索引,要记住一定要使用多列索引的第一个,如果没有使用第一个,就用不到索引。第三个对于or 的语句,要两个条件都是索引才能用到两个索引。
4、 尽量不要使用子查询,因为子查询要建立一个临时表,替代办法是使用连接查询。
二、优化数据库结构
1、如果一个表里有很多四段,而有些字段的使用频率很低,这个使用查询数据的时候的速度就会很慢。这个时候你就有必要把很多字段的表分解成多个表。
2、增加中间表,有时候需要经常查询某两个表中的几个字段,如果经常进行联表查询,会降低MYSQL的查询速度。对于这个情况,可以建立一个中间表。语句:insert into temp_score select student.id,student.grade fromstudent,score where student.id=score.stu_id;
3、增加冗余字段,有时候因为过分注重三范式,导致查询速度降低。解决的办法是可以适当增加一下冗余,没有必要分很多的表出来。
4、优化插入记录的速度,第一点在插入的时候要禁用索引,因为你索引如果开启的话,你插入的时候要对该数据列进行排序。解决办法是插入的时禁用索引,插入完了之后再打开索引。第二禁用唯一性检查,如果你每条每条插入的时候就要进行唯一性检查,太浪费了资源了吧,解决办法是set unique_checks=0;插入数据完了后用set unique_checks=1;打开唯一性检查。优化insert 语句,记住一点一个insert 语句插入多条记录比一条一条 的insert 的插入好很多。
5、分析,检查,优化表。分析表。分析Analyze table score;检查check table score [QUICK|FAST|CHANGED|MEDIUM|EXTENDED] 学到一个技巧,按下shift+f3,按第一下,是将单词开头字母变成大写,但后面的还是小写按第二下,就会将所有小写字母全部更换成大写字母。同样的,大写字母也可以用这招全部变成小写。优化optimize table score。优化可以消除删除和更新造成的磁盘碎片。