经过show status了解各类sql的执行频率mysql
定位执行效率低的sql语句sql
经过explain分析效率低的sql性能
经过show profile分析sql优化
经过trace分析优化器如何选择执行计划code
肯定问题,采起措施优化blog
mysql中使用索引的典型场景索引
匹配全值,条件全部列都在索引中并且是等值匹配get
匹配值的范围查找,字段必须在索引中博客
匹配最左前缀,复合索引只会根据最左列进行查找table
仅仅对索引进行查询,即查询的全部字段都在索引上
匹配列前缀,好比like 'ABC%',若是是like '%aaa'就不能够
若是列名是索引,使用column is null会使用索引
存在索引但不会使用索引的典型场景
以%开头的like查询不能使用b树索引
数据类型出现隐式转换不能使用索引
复合索引,查询条件不符合最左列原则
用or分割的条件,若是前面的条件有索引,然后面的条件没有索引
查看索引使用的状况
show status like 'Handler_read%';
若是Handler_read_rnd_next的值比较高,说明索引不正确或者查询没有使用到索引
按期检查表和分析表
分析表语法:
analyze table 表名;
检查表语法:
check table 表名;
按期优化表
对于字节大小不固定的字段,数据更新和删除会形成磁盘空间不释放,这时候就行优化表,能够整理磁盘碎片,提升性能
语法以下:
optimize table user(表名);
若是文章对你有帮助,请去个人博客留个言吧! 个人博客