码迷,mamicode.com
首页 > 数据库 > 详细

MYSQL SQL 优化

时间:2014-07-07 13:37:21      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:使用   数据   cti   工作   io   时间   

1.通过show status命令了解各种SQL执行的频率

  show [session|global]status 命令可以提供服务器状态信息,Com_xxx表示每个语句执行的次数。Innodb_xxx至少针对Innodb引擎

 通过这些参数可以很容易了解当前数据库以插入为主还是以查询为主,以及各类SQL 执行比例是多少。

     Connections:试图连接MYSQL服务器的次数

  Uptime:服务器工作时间

  slow_querier:慢查询次数

2.定位执行效率较低的SQL语句

  通过慢查询日志定位,不是很准确

  可以使用show processlist 查看当前MYSQL 在进行的线程,包括线程的状态,是否锁表等,可以实时地查看SQL的执行情况。同时对一些锁表操作进行优化。

3.通过EXPLAIN分析低效SQL的执行计划

  select_type :表示select的类型,常见取值SIMPLE(简单表,即不使用表连接或者子查询)。PRIMARY(主查询,即外层查询)。UNION(UNION 中的第二个或者后面的查询语句),SUBQUERY(子查询中的第一个SELECT等)

      table:输出结果集表

  type:表示MYSQL 在表中找到所需行的方式,或者叫服务类型。

      常见的有,ALL  INDEX  RANGE REF EQ_REF  CONST,SYSTEM   NULL从左到右 ,性能由最差到最好

  ALL:全表扫描,遍历全表

  Index:索引全扫描,Mysql遍历整个索引查询匹配的行

    Range:,索引范围扫描,常见于<,<=,>,>=,between 等操作符

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

  eq_ref:类似REF,区别在于使用的索引是唯一索引,对于每个索引的键值表中有一天记录匹配,简单来说,就是多表连接中使用primary key或者unique index作为关联条件

  const、systom :单表中最多有一个匹配行,查询起来非常迅速,所以则个匹配行中其他的列可以被优化器在当前查询中当做常量来处理。李二

 

MYSQL SQL 优化,布布扣,bubuko.com

MYSQL SQL 优化

标签:使用   数据   cti   工作   io   时间   

原文地址:http://www.cnblogs.com/OwenZeng/p/3815419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!