在編寫SQL語句時(shí),如果要實(shí)現(xiàn)一張表有而另一張表沒有的數(shù)據(jù)庫時(shí),通常第一直覺的寫法就是:
select * from table1 where table1.id not in (select id from table2),這種方法雖然很直觀,但是in及not in的寫法經(jīng)常會(huì)影響其執(zhí)行的效率,對(duì)于大數(shù)據(jù)量時(shí),這個(gè)原因經(jīng)常是性能的瓶頸。在SQL Server中,可以通過左連接的方法來解決,其替代寫法如下:
select a.* from table1 a left join table2 b on a.id=b.id where b.id is null
同理,這個(gè)方法也適用于in的情況。