基本的分析命令
在MySQL中,单一的工具或命令无法完成SQL语句的优化功能。本文将要介绍的SQL命令能够基本涵盖所有可能用到的SQL优化技术,包括创建索引。
1.EXPLAIN命令
要确定一条想要运行的SQL语句的QEP,EXPLAIN命令是必不可少的工具。
以后我们会详细介绍每一列的意义。下面的一些简单提示可以帮助我们快速找到大致的问题所在:
- 没有使用索引(key列的值为NULL)
- 很多处理过的行(rows列)
- 很多被评估的索引(possible_keys列)
EXPLAIN PARTITIONS命令
EXPLAIN的PARTITIONS关键字(MySQL5.1之后)对用于满足在partitions列中的查询的特定表分区提供附加信息。
2.SHOW CREATE TABLE命令
show create table命令可以便于阅读和操作的格式向用户呈现基本表中的当前列和索引定义的全部细节。
3.SHOW INDEXES命令
cardinality列的值非常重要,需要重点关注。该值代表在索引中每一列唯一值的数量估计值。
4.SHOW TABLE STATUS命令
用户可以使用show table status命令查看数据库表的底层大小以及表结构,其中包括存储引擎类型、版本、数据和索引大小、行的平均长度以及行数。
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free |Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment|
********************************************************************************************************************************************
| user | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 16384 | 0 | 1 | 2014-05-27 21:10:02 | NULL | NULL | utf8_general_ci | NULL | NULL | InnoDB free: 11264 kB; (`cityid`) REFER `login/city`(`id`) |