sql语句中not in的优化

这两天在写一sql遇到需要在where中使用not in的情况,如下:

select ID,name from Table_A where ID not in (select ID from Table_B)  

发现此sql语句执行很慢,如果字表里的数据集非常大的话更加不可想象,于是想到用left join来优化解决,如下:

select * from  
(select Table_A.ID as a_id,Table_A.name as a_name,Table_B.ID as b_id from Table_A left join Table_B on Table_A.ID=Table_B.ID) as tmp where tmp.b_id is null

优化之后的sql语句比原来的执行起来快了不少,看来以后基本上可以和“not in”说掰掰了!

Wilson

张弛有度、简约不简单