有二个表:
tb_a 有5万条记录,主键:tid;
tb_b 有6万条记录,主键:fid。
以下是一个简单的sql,为可查询的速度却,非常之慢,好几分钟都都不出结果。SELECT tid FROM tb_a a WHERE not exists (SELECT fid FROM tb_b where fid=a.tid);
请各位高手指点下原因所在。
tb_a 有5万条记录,主键:tid;
tb_b 有6万条记录,主键:fid。
以下是一个简单的sql,为可查询的速度却,非常之慢,好几分钟都都不出结果。SELECT tid FROM tb_a a WHERE not exists (SELECT fid FROM tb_b where fid=a.tid);
请各位高手指点下原因所在。
left join tb_b b on b.fid=a.tidWHERE b.fid is null
速度如何EXPLAIN 你的SQL语句
explain SELECT tid FROM tb_a a WHERE not exists (SELECT fid FROM tb_b where fid=a.tid);
贴出来看看
也是很慢。
EXPLAIN 结果:
select_type table rows extra
-------------------------------------------------------
PRIMARY tb_a 11091 Using where
DEPENDENT SUBQUERY tb_b 33905 Using where
left join tb_b b on b.fid=a.tidWHERE b.fid is nullEXPLAIN结果:select_type table rows extra
-------------------------------------------------------
SIMPLE a 11091
SIMPLE b 33905 Using where; Not exists
EXPLAIN 结果:
select_type table rows extra
-------------------------------------------------------
PRIMARY a 11091 Using where
DEPENDENT SUBQUERY b 33905 Using where
DESC 表名
select a.tid,(select b.fid FROM tb_b b where fid=a.tid limit 1) num from tb_a a WHERE num is null
explain select ...
不会这么慢的。
inner join tb_b b
on fid=a.tid