当前位置: 首页 > news >正文

湘潭建设路街道网站重庆网站关键词优化推广

湘潭建设路街道网站,重庆网站关键词优化推广,湖南网站制作收费标准,视频网站上市公司有哪些前言 这里主要是 探究一下 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
) ENGINE=InnoDB AUTO_INCREMENT=3333343 DEFAULT CHARSET=utf8

 

测试数据为序列 1 – 99

6435438d244443e8ab24c52f9a11fee7.png

 

 

ref 查询存在的记录

更新表结构, 增加 field1 的索引配置 

CREATE TABLE `tz_test` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`field1` varchar(12) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,KEY `field1` (`field1`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3333343 DEFAULT CHARSET=utf8

 

执行更新, 更新一部分记录的 field1 为 ”field33”

update tz_test set field1 = 'field33' where id in (33, 35, 60);

 

mysql 读取索引, 这个是在读取索引的数据, 然后和 查询条件进行对比  

索引记录存放了 原字段的值 -> 记录的主键 

这里获取到第一个匹配的索引记录

62d1768279794aa2a03c5c0da1cdd86f.png

 

up_rec 索引记录信息如下, 为 ‘field33’ -> 33

然后这里将 pcur->btr_cur->page_cur.rec 更新为 ‘field33’ -> 33 对应的索引的位置 

然后 接下来就是 读取索引的记录

d069245bba2943479f258703fc54b853.png

 

然后是比较 索引字段的信息 和 查询条件, 如果匹配上 才获取对应的记录

89208e1f1d354a4fa4b3a9c595407cdf.png 

 

是否需要查询真实记录?

 

这里会有两种情况, 一种情况是查询的 索引字段 以及 主键, 不需要额外的查询真实记录, 术语称之为 覆盖索引 

假设是普通字段, 这里更新 need_to_access_clustered 为 TRUE

b8db21b9b4b14b02a3ab8045ff801b6a.png

 

另外一种是需要根据 主键关联查询 到 真实的记录, 术语称之为 回表 

修改数据表结构如下 

CREATE TABLE `tz_test` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`field1` varchar(12) DEFAULT NULL,`field2` varchar(16) DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,KEY `field1` (`field1`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8update tz_test set field2 = id;

 

row_sel_get_clust_rec_for_mysql 中是根据索引记录获取真实的记录 

prebuilt->clust_ref 为根据索引记录构造出的 主键查询条件

btr_pcur_open_with_no_init 根据这个主键查询条件去定位目标记录, 将记录信息更新到 prebuilt->cluster_pcur 中相关 

a5a1d87d06b74461a408ba00ebf794e0.png

  

根据索引记录 构造 主键查询条件的地方, 比如这里 ‘field33’ -> 35 的索引记录 

构造出来的主键查询条件为 “where id = 35”

246426680b8046e4b44f633fadeea46a.png

 

更新待复制 rec 为 cluster_rec, 这里的 cluter_rec 为真实记录的地址信息

f635f964c1aa45259efbfbe1e1ccbf52.png 

cluster_rec 的记录信息如下 

58835178ec7847bb83ade74c17244cc5.png 

读取到了真实记录的信息到 mysql_buf

47d70afa718c42528f8e6b2ccba5675d.png 

然后不断向下迭代索引记录, 这里是迭代到了 ‘field33’ -> 35

依次会迭代 ‘field33 -> 60’, ‘field34’ -> 34

到 ‘field34’ -> 34 的时候, 比较索引条件 跳出了 row_search_mvcc 的循环 

8db8471f02ec4e56b424e5ca662752fe.png

 

这里遍历的索引记录信息依次如下, 索引是按照顺序排列的 

到 ‘field34’ -> 34 的时候, 比较索引条件 跳出了 row_search_mvcc 的循环 

7f233b6c303149ee97f64ee3275f2ac7.png

 

第二条以及之后的记录是缓存在了 prebuilt->fetch_cache 中, 最多预取 7 条记录 

10a0127e77914022b9d4ca59ac3219c9.png

 

第二次, 第三次获取数据是直接通过缓存获取 

这里 prebuilt->fetch_cache 中各个元素是已经转换好了的 mysql_rec, 因此 这里是直接 memcpy 到 READ_RECORD.record 中即可 

56817e97743b4876804cb7742693cbf1.png

 

 

ref 查询不存在的记录

比如说我这里执行一个查询 “select * from tz_test where field1 = 'field133';”

然后时 查询不到记录的, 这里来调试一下 这里的整个流程

查询索引, 定位到的最近的一条记录是索引记录 ‘field14 -> 14’, 然后是根据是根据条件进行匹配, 结果匹配不上退出 row_search_mvcc

ec70f69a19224417afc531d8190e385a.png

 

索引条件匹配不上之后退出  

83d0e35ee98e4a07965b3f6fa2b17d4e.png

 

然后外层迭代 记录/索引 这一层处理, 跳出循环 

最终响应 0 条记录 

39399d7a7a08478bb73bc9203f7dd828.png

 

 

 

 

 

http://www.yayakq.cn/news/568803/

相关文章:

  • 优质的专业网站建设做塑料的外贸网站有哪些
  • 自己做的网站怎么放视频教程软件开发培训学费
  • 网站设计就业要求天津网络公司流程
  • 个人视频网站制作wordpress手机视频播放器
  • wordpress建站社区卖花网站模板
  • 网站开发设计注册建网站用什么服务器好
  • 四大免费网站2017网站建设前景
  • 怎么给自己做个网站Wordpress订阅栏目
  • 网站联系方式设计网站上线前做环境部署
  • 网站的页面动态需要哪些方法做太月星网站建设程序开发网页设计
  • 网站后台怎么做alt标签狗贩子怎么做网站卖狗
  • 怎么做电力设计公司网站最新网络游戏排行榜2021前十名
  • 设计师可以做兼职的网站网站建设培训学费
  • 深圳建设网站哪里好it外包服务是什么意思
  • 当阳建设中学网站浙江建设人才网
  • 工会网站平台建设h5免费制作平台哪个好
  • 网站正在建设中 给你带来网页设计免费素材
  • html5网站和传统网站的优点浙江做网站
  • 如何网站建设的方案杭州网站建设公司电话
  • 个人门户网站模板下载建设网站需要哪些硬件设施
  • 公司网站模板免费下载免费查询公司信息
  • 什么是行业网站?做网站开发有什么专业证
  • 旅游网站建设公司排名建搜索引擎网站
  • 网站章子怎么做电子商务网站建设名词解释
  • 网站建设费用一年站长工具seo综合查询怎么看数据
  • 石家庄网站维护新网域名管理平台
  • 上海专业的网站公wordpress批量添加文章
  • 做网站公众号多少钱百度快速提交入口
  • 余姚哪里有做淘宝网站的优酷视频接到网站怎么做
  • 郑州平台网站建设厦门企业网站建设方案