前言
这里主要是 探究一下 explain $sql 中各个 type
诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断
这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录
以及 相关的差异
此系列文章建议从 mysql const 查询 开始看
测试表结构信息如下
CREATE TABLE `tz_test` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`field1` varchar(12) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3333343 DEFAULT CHARSET=utf8
测试数据为序列 1 – 99
index 查询存在的记录
执行查询如下 “select count(*) from tz_test where id <> 1;”
explain 如下, 然后会使用 field1 所在的索引
row_search_mvcc 如下, 遍历的是索引记录
我们来看一下 整理流程遍历的索引列表
遍历了 field1 的所有的索引记录, 99条记录 + infimum + supremum + supremum
执行查询如下 “select distinct(field1) from tz_test;”
explain 如下, 然后会使用 field1 所在的索引
我们来看一下 整理流程遍历的索引列表
遍历了 field1 的所有的索引记录, 99条记录 + infimum + supremum + supremum
完