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

福州成人报考网站b2b网站大全免费

福州成人报考网站,b2b网站大全免费,vb.net 网站开发,一元快速引流1000个方法前言 这里我们主要是来探讨一下 mysql 中 in 的使用, find_in_set 的使用 这两者 在我们实际应用中应该也是 非常常用的了 测试数据表如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(16) DEFAULT NULL,field2 varchar(16) DEFAU…

前言

这里我们主要是来探讨一下 mysql 中 in 的使用, find_in_set 的使用 

这两者 在我们实际应用中应该也是 非常常用的了 

 

 

测试数据表如下

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

 

然后测试数据如下 

975566306622420d98cc68cc58d323e6.png

 

 

 in 拆分为多个 range 查询

执行 sql 如下 “select * from tz_test where field1 in ("field1", "field5");”

 

explain 如下, 然后 这个查询会将 sql 拆分为 类似于如下效果

“select * from tz_test where field1 > =‘field1’ and field1 <= ‘field1’ ” + “select * from tz_test where field1 > =‘field5’ and field1 <= ‘field5’ ”

b04f65871c884761b56505e69315499a.png

 

然后我们来看一下 迭代这多个 range 查询的地方 

第一个 range 区间如下 实现类似于 “select * from tz_test where field1 > =‘field1’ and field1 <= ‘field1’”

c998cce0fd444c058dafad78d031dc5f.png

 

第二个 range 区间如下 实现类似于 “select * from tz_test where field1 > =‘field5’ and field1 <= ‘field5’”

9cefce313bfb49e5a266f72144945d8a.png

 

总共执行的 row_search_mvcc 的查询如下 

其中, 第二个 ”field2” 和 第二个 ”field6” 的查询是在 do..while 中 read_range_next 中去查询的 

第一个 field1 和 field2 是在 “select * from tz_test where field1 > =‘field1’ and field1 <= ‘field1’” range 查询中 

第一个 field5 和 field6 是在 “select * from tz_test where field1 > =‘field5’ and field1 <= ‘field5’” range 查询中 

至于 range 的查询流程, 这里就不多 赘述了, 可以参考前面 mysql range 查询 

ca94fcf264cb4bfe952fc397786b4b36.png

 

 

in 的全表扫描 

执行 sql 如下 “select * from tz_test where field1 in ("field9", "field5");”

 

explain 如下, 可以看到的是 进行了 全表扫描

b1dde2d77a8946eb8c4eebaf55e11a63.png

 

在 row_search_mvcc 中没有做条件过滤限制 

in 的条件限制是在外面 Item_func_in 中进行处理的, 来判断当前 字段 是否在目标 列表中

ea82fe1ea12646b398e68f9aac8bd7ef.png

 

然后外层 evaluate_join_record 中来判断条件是否成立, 如果不成立 更新统计信息

如果成立, 输出当前记录 选择的相关列

b3d54cb424d74245831d29d25e6b3250.png

 

 

什么时候拆分 range, 什么时候 不拆分? 

这里仅仅是 整理一个 模糊的规律, 因为 全表扫描的开销 取决于很多情况

 

执行sql 如下 “explain select * from tz_test where field1 in ("field1", "field5");”

可以看到 全表扫描 的开销大概是在 5 左右 

field1 索引扫描开销是 4, 大致的计算方式为扫描的记录的数量, 比如 ”field1”, ”field5” 需要扫描 “field1”, “field2”, “field5”, “field6,field5”

这里 field1 索引扫描开销较小, 因此选择的是 索引扫描

24ccf65a016048ee844198600656a911.png

 

执行sql 如下 “explain select * from tz_test where field1 in ("field9", "field5");”

可以看到 全表扫描 的开销大概是在 5 左右 

field1 索引扫描开销是 5, 大致的计算方式为扫描的记录的数量, 比如 ”field9”, ”field5” 需要扫描 “field5”, “field6,field5”, “field9”, “field9”, “supremum”

这里 全表索引扫描开销较小, 因此选择的是 全表扫描

e750426bc6234610a3f750d1e94f2854.png

 

执行sql 如下 “explain select * from tz_test where field1 in ("field1", "field2", "field3");”

可以看到 全表扫描 的开销大概是在 5 左右 

field1 索引扫描开销是 6, 大致的计算方式为扫描的记录的数量, 比如 ”field1”, ”field2”, “feidl3” 需要扫描 “field1”, “field2”, “field2”, “field3”, “field3”, “field4,field5”

这里 全表索引扫描开销较小, 因此选择的是 全表扫描

cd8ce8597d864491bd76c582ae0b5129.png

 

 

 

 

 

http://www.ds6.com.cn/news/107611.html

相关文章:

  • 专业网站建设分类标准太原网站推广公司
  • 网站搜索功能怎么实现长沙线上引流公司
  • 江苏商城网站建设服务网站营销软文
  • 做暧动漫视频在线观看网站深圳网站推广
  • 网站单页面怎么做杭州seo优化
  • 网站开发目录过多的缺点网络公司网络营销推广方案
  • 免费建造网站腾讯广告代理商加盟
  • jsp高级动态网站开发网站内部链接优化方法
  • 网站搭建多少钱关键词优化一般收费价格
  • 免费网站的软件下载流量平台有哪些
  • 有女人和马做网站吗有创意的营销案例
  • 政府网站建设历史电子商务平台
  • seo上首页郑州网站seo公司
  • 哪个网站的理财频道做的比较好首页关键词优化公司
  • icp wordpress 模板百中搜优化
  • 网站服务器租赁费用表格做网站关键词优化的公司
  • 做海报的网站小白qq新手怎么做网页
  • 合工大智能院网站建设靠谱的影视后期培训班
  • 如何做音乐网站广告代理
  • 免费建立自己的网站空间b2b电子商务平台网站
  • 网站 ca证书怎么做企业网站有哪些类型
  • 小说网站开发淘宝店铺转让价格表
  • 网站内容页怎么做的品牌推广百度seo
  • 网站添加wordpress商城网站建设
  • 网站如何做404页面品牌运营策划
  • 宝安网站建设公司968临沂google推广
  • 公司做网站推广的价格搜索引擎优化的策略主要有
  • 企业门户网站用户类型合肥网站推广公司排名
  • 水墨 网站源码建站abc
  • 宝安做棋牌网站建设济南做网站公司哪家好