做网站公司排名,运营网站需要多少钱,网络营销做的比较好的企业,大访问量的网站怎么做优化前言
这里主要是 探究一下 explain $sql 中各个 type
诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断
这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录
以及 相关的差异
此系列文章建议从 mysql const 查询 开始看 测试表结构…前言
这里主要是 探究一下 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
) ENGINEInnoDB AUTO_INCREMENT3333343 DEFAULT CHARSETutf8 测试数据为序列 1 – 99 like 通配符的位置造成的影响
执行 sql 如下 “select * from tz_test where field1 like %field2;”
可以看出, 扫描的是全表 执行 sql 如下 “select * from tz_test where field1 like field%2;”
可以看出, 扫描的是全表 执行 sql 如下 “select * from tz_test where field1 like field2%;”
可以看出, 扫描的是部分索引, 这个也是结合了 索引是按照顺序存储的规则来计算的优化 “like 1%” 转换为了 range 查询
这里从 key_tree 中将数据转换到 PARAM-max_key, 然后 之后更新到传入的 range 中, 以供后面查询使用 具体的存储的地方是在这里, 将 key_tree 的数据存储到 PARAM-max_keys 中 数据从 PARAM 转换到 range 中, 后面的查询是使用的这个 range 然后 key_tree 的数据来自于 条件的解析
具体的range最大最小边界的 padding 方式如下, 使用 c-min_sort_char, c-max_sort_char 来进行补齐, 这里 c 为 utf8_general_ci
c-max_sort_char 转换为字节序列是就是 0xefbfbf 进而将如下模糊查询转换为了范围查询
select * from tz_test where field1 like field2%;
select * from tz_test where field1 field2\x0\x0...\x0 and field1 field2\xef\xbf...\xbf; 完