Mysql优化相关命令

1.

使用上面的命令可以查询当前SQL语句的信息,其中包括运行时间。

2.

在select语句前面添加explain可以查看SQL语句的查询执行计划(QEP), 根据此结果,可以查看SQL语句执行的相关信息。
key:索引的信息,NULL指没有索引。
rows:查询影响的行数。

3.

SQL语句优化之前,首先执行上面的两个命令,对表结构做检查。
show table status命令可以查看数据库表的底层大小以及表结构,其中包括存储引擎类型,版本,数据和索引大小,行的平均长度以及行数。如果是InnoDB引擎,值为估计值并且可能有很大的误差。

4.

explain 的extended 扩展能够在原本explain的基础上额外的提供一些查询优化的信息,这些信息可以通过mysql的show warnings命令得到。上面可以看到select * 被优化了。

5.

mysqldump工具能够快速生成用户模式或数据库实例中所有表的定义。
-e 是数据库名称,tickets 是表名。–no-data 指的是不导出表的数据。
通过cat tmp/ticket.sql 查看相关表结构。

6.

Handler_read_first 代表读取索引头的次数,如果这个值很高,说明全索引扫描很多。
Handler_read_key代表一个索引被使用的次数,如果我们新增加一个索引,可以查看Handler_read_key是否有增加,如果有增加,说明sql用到索引。
Handler_read_next 代表读取索引的下列,一般发生range scan。
Handler_read_prev 代表读取索引的上列,一般发生在ORDER BY … DESC。
Handler_read_rnd 代表在固定位置读取行,如果这个值很高,说明对大量结果集进行了排序、进行了全表扫描、关联查询没有用到合适的KEY。
Handler_read_rnd_next 数值越大,代表进行了很多表扫描,查询性能低下。

此条目发表在MYSQL分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。