mysql优化建议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35480270/article/details/79280496

sql优化判断

1.首先是定位效率比较低的sql语句

2.使用explain分析低效SQL的执行计划

     type=const/system  单表中最多有一个匹配行

     type=eq_ref     使用唯一索引,对于每个索引键值,表中只有一条记录匹配

     type=ref   使用的是非唯一索引或者前缀索引扫描,返回匹配某个单独记录行

     type=range  索引范围扫描   常见的操作是>=  , <=, > , < , between;

     type=index   索引扫描,mysql遍历整个索引来查找匹配的行

     type=All    全表扫描,mysql遍历全表来找到匹配的行

3  innodb引擎的表在count(*)时经历了sending data状态,存在访问数据的过程。但是myisam引擎的表在execute之后就直接结束了查询,完全是不要访问数据的


mysql索引问题

    索引是在mysql存储引擎层中实现的,而不是在服务器层实现的,索引每种存储引擎的索引都不完全相同的,也不是所有的存储引擎都支持所有的索引类型

    B-tree   最常见的索引,B树索引不是二叉树   而是平衡树

    HASH索引。只有memory引擎支持

    R-tree   空间索引是mysql的一个特殊索引类型。主要用于地理空间数据类型

    Full-text   全文索引。innodb从mysql5.6开始提供对全文索引的支持

   mysql使用索引的典型场景

   1   匹配全值

   2   匹配值的范围查询

   3   匹配最左前缀

   4   仅仅对索引进行查询

   5   匹配列前缀

    mysql存在索引但是不能使用的典型场景

    1,以%开头的查询不能使用B-Tree索引

    2, 查询的数据类型出现隐式转化的时候也不能使用索引

    3 ,符合索引,如果不满足最左原则的时候是不会使用符合索引的

    4,如果你MySQL估计使用索引比全表查询要慢的时候就不在使用索引了

     mysql检查表和优化表

     检查表    check table tablename   ,

     分析表   analyze table tablename 

     优化表   optimize  table tablename  这个命令可以将表的空间碎片进行合并,并且可以消除忧郁删除数据造成的空间浪费



猜你喜欢

转载自blog.csdn.net/qq_35480270/article/details/79280496