替代not in 和 in 的辦法

2022-06-12 11:12:12 字數 436 閱讀 9434

在程式中,我們經常會習慣性的使用in和not in,在訪問量比較小的時候是可以的,但是一旦資料量大了,我們就推薦使用not exists或者外連線來代替了。

如果要實現一張表有而另外一張表沒有的資料時,我們通常會這麼寫:

select

*from

table t where t.id not

in (select id from table2)

我們可以使用下面的語句代替:

select a.* from table1 a left join table2 b on a.id = b.id where b.id is null; 

select a.* from table1 a left join table2 b on a.id = b.id where b.id is not null;

ORACLE中NOT IN 的替代

典型的查詢方式為 select title from bookshelf where title not in select title from bookshelf checkout order by title 如果bookshelf checkout很大的話,速度可能會很慢,因為oracle會...

ORACLE中NOT IN 的替代

查詢哪些書沒有借出?典型的查詢方式為 select title from bookshelf where title not in select title from bookshelf checkout order by title 如果bookshelf checkout很大的話,速度可能會很慢...

優化SQL語句 in 和not in的替代方案

但是用in的sql效能總是比較低的,從sql執行的步驟來分析用in的sql與不用in的sql有以下區別 sql試圖將其轉換成多個表的連線,如果轉換不成功則先執行in裡面的子查詢,再查詢外層的表記錄,如果轉換成功則直接採用多個表的連線方式查詢。由此可見用in的sql至少多了乙個轉換的過程。一般的sql...