EXPLAIN 输出格式
select_type
table
type
possible_keys
key
key_len
rows
Extra
MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT
语句进行分析, 并输出 SELECT
执行的详细信息, 以供开发人员针对性优化.
EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如:
EXPLAIN SELECT * from user_info WHERE id < 300;
各列的含义如下:
- id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.
- select_type: SELECT 查询的类型.
- table: 查询的是哪个表
- partitions: 匹配的分区
- type: join 类型
- possible_keys: 此次查询中可能选用的索引
- key: 此次查询中确切使用到的索引.
- ref: 哪个字段或常数与 key 一起被使用
- rows: 显示此查询一共扫描了多少行. 这个是一个估计值.
- filtered: 表示此查询条件所过滤的数据的百分比
- extra: 额外的信息
explain 可以查看执行计划是否符合预期,如果有出现rows较大的情况,则说明出现了全表扫描,将来会是性能瓶颈
show warning的结果,则能看到优化器处理后的语句。如果与原始语句有出入,仔细对比研究能够发现实际问题。
在MySQL中使用SHOW STATUS语句查询一些MySQL数据库的性能,其语法为:SHOW STATUS LIKE 'value';
其中value是要查询的参数值,一些常用的性能参数如下:
- Connections:连接MySQL服务器的次数;
- Uptime:MySQL服务器的上线时间;
- Slow_queries:慢查询次数;
- Com_select:查询操作的次数;
- Com_insert:插入操作的次数;
- Com_update:更新操作的次数;
- Com_delete:删除操作的次数。