这次总结下mysql表关联优化
mysql表关联常见的有两种算法:
- Nested-Loop Join算法
- Block Nested-Loop Join算法
怎样查看是哪种连接?例如t1表10000行记录,t2表100行记录。
sql语句
s
select * from t1 inner join t2 on t1.a= t2.a;
添加Explain查看,一般 join 语句中,如果执行计划 Extra 中未出现 Using join buffer 则表示使用的 join 算法是 NLJ。
Extra 中 的Using join buffer (Block Nested Loop)说明该关联查询使用的是 BNL 算法。
Nested-Loop Join算法
Nested-Loop Join算法意思是嵌套循环连接算法,它是指一次一行循环地从第一张表(称为驱动表)中读取行,在这行数据中心取到关联字段ÿ