到底可不可以使用join?

在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类:
1、我们 DBA 不让使用 join,使用 join 有什么问题呢?
2、如果有两个大小不同的表做 join,应该用哪个表做驱动表呢?

今天这篇文章,我就先跟你说说 join 语句到底是怎么执行的,然后再来回答这两个问题。

为了便于量化分析,我还是创建两个表 t1 和 t2 来和你说明。

CREATE TABLE t2 (
id int(11) NOT NULL,
a int(11) DEFAULT NULL,
b int(11) DEFAULT NULL,
PRIMARY KEY (id),
KEY a (a)
) ENGINE=InnoDB;

drop procedure idata;
delimiter ;;
create procedure idata()
begin
declare i int;
set i=1;
while(i<=1000)do
insert into t2 values(i, i, i);
set i=i+1;
end while;
end;;
delimiter ;
call idata();

create table t1 like t2;
insert into t1 (select * from t2 where id<=100)

可以看到,这两个表都有一个主键索引 id 和一个索引 a,字段 b 上无索引。存

猜你喜欢

转载自blog.csdn.net/yzh_2017/article/details/128698317