MySQL性能优化——Explain使用分析( 三 )
ref:显示索引的查询条件 , 常量的效果最好 。
例1:EXPLAIN SELECT * FROM order_info WHERE user_id = 1 AND product_name = 'p1'
文章插图
执行结果
ref一列显示两个常量 , 代表查询条件中两个 常量参数 。
例2:explain SELECT * FROM user_info, order_info WHERE user_info.id = order_info.user_id;
文章插图
执行结果
上图中执行order_info表时 , 先进行了索引扫描(tpye类型是index) , 然后在其结果集中 , 用order_info.user_id(ref 列中的值)去user_info表中做匹配 。
rows:是一个重要的字段. MySQL 查询优化器根据统计信息, 估算 SQL 要查找到结果集需要扫描读取的数据行数 , 这个值非常直观显示 SQL 的效率好坏, 原则上 rows 越少越好 。
Extra:EXPLAIN中很多额外信息会显示在Extra上 , 常见有如下几种内容:
- Using filesort
文章插图
执行结果
我们的索引是 KEY `user_product_detail_index` (`user_id`, `product_name`, `productor`)但是上面的查询中根据 product_name 来排序, 因此不能使用索引进行优化, 进而会产生 Using filesort 。 如果我们将排序依据改为 ORDER BY user_id, product_name, 那么就不会出现 Using filesort 了 。
例如:explain SELECT * FROM order_info ORDER BY user_id,product_name;
文章插图
执行结果
- Using index:“索引覆盖” , 表示查询在索引中可以满足 , 不需要回表 。
- Using temporary:查询有使用临时表 , 一般出现于排序, 分组和多表 join 的情况, 查询效率不高, 建议优化 。
附录:演示脚本
CREATE TABLE `user_info` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL DEFAULT '',
`age` INT(11) DEFAULT NULL, PRIMARY KEY (`id`),
KEY `name_index` (`name`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO user_info (name, age) VALUES ('xys', 20);
INSERT INTO user_info (name, age) VALUES ('a', 21);
INSERT INTO user_info (name, age) VALUES ('b', 23);
INSERT INTO user_info (name, age) VALUES ('c', 50);
INSERT INTO user_info (name, age) VALUES ('d', 15);
INSERT INTO user_info (name, age) VALUES ('e', 20);
INSERT INTO user_info (name, age) VALUES ('f', 21);
INSERT INTO user_info (name, age) VALUES ('g', 23);
INSERT INTO user_info (name, age) VALUES ('h', 50);
INSERT INTO user_info (name, age) VALUES ('i', 15);
CREATE TABLE `order_info` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`user_id` BIGINT(20) DEFAULT NULL,
`product_name` VARCHAR(50) NOT NULL DEFAULT '',
推荐阅读
- 搭载骁龙888处理器+120W超充 横屏性能旗舰iQOO 7正式发布
- 不单性能一骑绝尘 iQOO 7的这些亮点也值得一提
- 骁龙888领衔 iQOO 7搭载新一代性能“铁三角”
- “性能旗舰”iQOO 7正式发布:感受全感操控3798元起
- 向日葵远程控制企业版客户端更新升级,优化远控UI适配SADDC内核算法
- 苹果两款新iPad齐曝光:性能提高、入门款更轻薄、售价便宜
- 发售仅7天,性能全国第一:华为、OV一起上,都不如这款手机?
- 视网膜优化?索尼具认知能力电视芯片XR来了
- 传统1/10大小 七彩虹发布最小的mini SSD硬盘:性能首次公开
- 荣耀v40pro对比vivox60pro哪个好区别在哪 性能谁更强