Mysql join表连接Block Nested-Loop算法的优化意义在哪里?

博文: https://blog.csdn.net/wanbin6...

Block Nested-Loop算法
MySQL BNL算法原本只支持内连接,现在已支持外连接和半连接操作,包括嵌套外连接。

BNL算法原理:将外层循环的行/结果集存入join buffer,内存循环的每一行数据与整个buffer中的记录做比较,可以减少内层循环的扫描次数

举个简单的例子:外层循环结果集有1000行数据,使用NLJ算法需要扫描内层表1000次,但如果使用BNL算法,则先取出外层表结果集的100行存放到join buffer, 然后用内层表的每一行数据去和这100行结果集做比较,可以一次性与100行数据进行比较,这样内层表其实只需要循环1000/100=10次,减少了9/10。
————————————————

问题:join_buufer中10行数据,内存表和join_buffer做比较,因此比较次数10*内层表行数,显然比较次数并没有减少。

“可以一次性与100行数据进行比较,”是什么意思?

以上是 Mysql join表连接Block Nested-Loop算法的优化意义在哪里? 的全部内容, 来源链接: utcz.com/p/944268.html

回到顶部