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

靖江网站建设制作网站建设个人工作室

靖江网站建设制作,网站建设个人工作室,物流企业网站建设策划书6,网站建设协议需要注意的问题JOIN 是 MySQL 用来进行联表操作的#xff0c;用来匹配两个表的数据#xff0c;筛选并合并出符合我们要求的结果集。 JOIN 操作有多种方式#xff0c;取决于最终数据的合并效果。常用连接方式的有以下几种: 什么是驱动表 ? 多表关联查询时,第一个被处理的表就是驱动表,使用…JOIN 是 MySQL 用来进行联表操作的用来匹配两个表的数据筛选并合并出符合我们要求的结果集。 JOIN 操作有多种方式取决于最终数据的合并效果。常用连接方式的有以下几种: 什么是驱动表 ? 多表关联查询时,第一个被处理的表就是驱动表,使用驱动表去关联其他表. 驱动表的确定非常的关键,会直接影响多表关联的顺序,也决定后续关联查询的性能 驱动表的选择要遵循一个规则: 在对最终的结果集没有影响的前提下,优先选择结果集最小的那张表作为驱动表 3) 三种JOIN算法 1.Simple Nested-Loop Join 简单的嵌套循环连接 ) 简单来说嵌套循环连接算法就是一个双层for 循环 通过循环外层表的行数据逐个与内层表的所有行数据进行比较来获取结果. 这种算法是最简单的方案性能也一般。对内循环没优化。 例如有这样一条SQL: -- 连接用户表与订单表 连接条件是 u.id o.user_id select * from user t1 left join order t2 on t1.id t2.user_id; -- user表为驱动表,order表为被驱动表 转换成代码执行时的思路是这样的: for(user表行 uRow : user表){for(Order表的行 oRow : order表){if(uRow.id oRow.user_id){return uRow;}} } 匹配过程如下图 SNL 的特点 简单粗暴容易理解就是通过双层循环比较数据来获得结果 查询效率会非常慢,假设 A 表有 N 行B 表有 M 行。SNL 的开销如下 A 表扫描 1 次。 B 表扫描 M 次。 一共有 N 个内循环每个内循环要 M 次一共有内循环 N * M 次 2) Index Nested-Loop Join 索引嵌套循环连接 Index Nested-Loop Join 其优化的思路: 主要是为了减少内层表数据的匹配次数 , 最大的区别在于用来进行 join 的字段已经在被驱动表中建立了索引。 从原来的 匹配次数 外层表行数 * 内层表行数 , 变成了 匹配次数 外层表的行数 * 内层表索引的高度 极大的提升了 join的性能。 当 order 表的 user_id 为索引的时候执行过程会如下图 注意使用Index Nested-Loop Join 算法的前提是匹配的字段必须建立了索引。 3) Block Nested-Loop Join( 块嵌套循环连接 ) 如果 join 的字段有索引MySQL 会使用 INL 算法。如果没有的话MySQL 会如何处理 因为不存在索引了所以被驱动表需要进行扫描。这里 MySQL 并不会简单粗暴的应用 SNL 算法而是加入了 buffer 缓冲区降低了内循环的个数也就是被驱动表的扫描次数。 在外层循环扫描 user表中的所有记录。扫描的时候会把需要进行 join 用到的列都缓存到 buffer 中。buffer 中的数据有一个特点里面的记录不需要一条一条地取出来和 order 表进行比较而是整个 buffer 和 order表进行批量比较。 如果我们把 buffer 的空间开得很大可以容纳下 user 表的所有记录那么 order 表也只需要访问一次。 MySQL 默认 buffer 大小 256K如果有 n 个 join 操作会生成 n-1 个 join buffer。 mysql show variables like %join_buffer%; -------------------------- | Variable_name    | Value  | -------------------------- | join_buffer_size | 262144 | -------------------------- ​ mysql set session join_buffer_size262144; Query OK, 0 rows affected (0.00 sec) 4) JOIN优化总结 永远用小结果集驱动大结果集(其本质就是减少外层循环的数据数量) 为匹配的条件增加索引(减少内层表的循环匹配次数) 增大join buffer size的大小一次缓存的数据越多那么内层包的扫表次数就越少 减少不必要的字段查询字段越少join buffer 所缓存的数据就越多 知识来源马士兵教育
http://www.hkea.cn/news/14339745/

相关文章:

  • 网站建设款计入哪个会计分录企业qq官网
  • 免费学习资源网站有哪些网站是用php做的
  • 电子商务实网站的建设网站风格包括
  • 青岛开发网站wordpress开发插件
  • 花生壳做的网站稳定吗网站后台添加编辑器
  • 医疗整形网站怎么做经营一个小型app多少钱
  • 一条龙建站开个免费的网站多少钱
  • 网站sem优化怎么做网站突然消失了
  • 搬家网站模板自助建站系统哪个好用
  • 贸易公司寮步网站建设哪家好佛山网站建设联系电话
  • 网站php怎么做太原制作网站的公司哪家好
  • 安康手机网站建设郑州网站建设工作室
  • 网站建设公司哪家好 该如何选择新建的网站怎么做seo优化
  • 网站建设短信用凡科做网站要钱吗
  • 像wordpress一样的网站吗wordpress项目下载文件
  • 做夜夜做网站网站建设-搜遇网络
  • 网站推广要怎样做女同性怎么做的视频网站
  • 烟台 网站建设多少钱电商运营培训多少钱
  • 网站建设怎么在图片上加字如何看网站的版本号
  • 巴中区建设局网站网络营销案例2022
  • 做logo有哪些网站在线自助设计平台
  • 银川网站建设nx110扬州建设教育信息网站
  • 上海专业网站建设价格低如何提升seo
  • 建网站的公司不肯签合同建立网站的作用
  • 网站没有流量怎么办二手车 东莞网站建设
  • 自己做的网站 360不兼容北京制作网站公司排名
  • 建站网址什么意思代理东莞网站制作公司
  • 建水网站开发天津网站建站
  • 长沙网站优化推广店铺网站域名怎么做
  • 深圳自建站网站平台类网站制作公司