MySql 中 “关联”一词包含的意义比一般意义上理解的要广泛。总的来说,MySQL认为任何一个查询都是一次“关联”。
MySQL关联查询原理
MySQL对任何关联都执行嵌套循环关联操作,即MySQL先在一个表中循环取出单条数据,然后再嵌套循环到下一个表中寻找匹配的行。依次下去,直到找到所有表中匹配的行为止。
例子
SELECT tab1.col1,tab2.col2 FROM tab1 INNER JOIN tab2 USING(col3) where tab1.col1 in (5,6);
执行上面语句的伪代码如下:
outer_iter = iterator over tab1 where col1 in (5,6)
outer_row = outer_iter.next
while outer_row
inner_iter = iterator over tab2 where col3 = outer_row.col3;
inner_row = inner_iter.next;
while inner_row
output [outer_row.col1,inner_row.col2]
inner_row = inner_iter.next
end
outer_row = outer_row.next
end