Mysql Explain的使用(优化查询)
作者:WhyWin 发布时间:[ 2016/9/13 10:50:41 ] 推荐标签:数据库 MySQL
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
1、创建数据库
创建的sql语句如下:
/*
Navicat MySQL Data Transfer
Source Server : localhost-newpassword
Source Server Version : 50550
Source Host : localhost
Source Database : testExplain
Target Server Version : 50550
File Encoding : utf-8
Date: 08/05/2016 18:06:12 PM
*/
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`name` varchar(30) NOT NULL,
`age` int(11) NOT NULL,
`sex` tinyint(4) NOT NULL,
`isDeleted` tinyint(4) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_unidx` (`id`) USING BTREE,
UNIQUE KEY `name_unidx` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of `user`
-- ----------------------------
BEGIN;
INSERT INTO `user` VALUES ('1', 'wwwwe', '11', '1', '0'), ('2', '222', '22', '1', '0'), ('3', '2222', '10', '0', '0');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
2、explain使用方法
使用方法:在select语句前加上explain 可以了,如:
explain select * from user where id = 1
结果:
+----+-------------+-------+-------+------------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+------------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | user | const | PRIMARY,id_unidx | PRIMARY | 4 | const | 1 | |
+----+-------------+-------+-------+------------------+---------+---------+-------+------+-------+
3、explain各个参数解释
id:select识别符。这个是select查询序列号。这个不重要,查询序号即为sql语句执行的顺序。
select_type主要有下面几个值:
simple 它表示简单的select,没有union和子查询
primary 外面的select,在有子查询的语句中,外面的select查询是primary
union union语句的第二个或者说是后面那一个.
dependent union UNION中的第二个或后面的SELECT语句,取决于外面的查询
union result UNION的结果
table:输出的行所用的表
type:显示连接使用了何种类型。从好到差的连接类型为const、eq_reg、ref、range、indexhe和all
const:表多有一个匹配行,const用于比较primary key 或者unique索引。因为只匹配一行数据,所以很快记住一定是用到primary key 或者unique
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11