• mysql5.7基于块的嵌套循环连接(Block Nested-Loop Join)


    mysql5.7基于块的嵌套循环连接(Block Nested-Loop Join)

    select * from t_order t1,t_order_detail t2 where t1.id = t2.order_id and t1.amount > 100;

    这里t1是驱动表,t2是被驱动表,当t1一行记录对应t2的3行记录时,t2表就需要循环3次,当t1表有N行记录时,t2表就需要循环 N*3次,这种性能是比较低的。

     所以mysql就想出了嵌套循环连接的方法,为SQL开辟了一块内存,专门为t2表的一行记录重复使用多次,以匹配已经从t1表查询出来的值。

    mysql中专门为join buffer设置了一个变量,单位是字节:

    show variables like 'join_buffer_size';  -- 默认262144字节

        262144 bytes

    = 256 kb

    = 0.25 mb

    mysql执行的时候,join buffer只放驱动表,不放被驱动表。

    end.

    支付宝扫一扫,为女程序员打赏!
    作者:梦幻朵颜
    版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    静态网页
    css
    html
    数据分析器
    初步了解计算机
    如何导出数据库的数据词典
    阅读计划
    python之文件读写
    曾梦想仗剑走天涯,看世界的繁华
    python lambda匿名函数
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/14968179.html
Copyright © 2020-2023  润新知