Oracle數據庫中IN參數個數超過1000的問題

問題描述:Oracle數據庫中IN參數個數超過1000sql

遇到這種狀況,想快速解決,數據庫有 exists 關鍵字的話,能夠用exists來代替 in 關鍵字。數據庫

數據庫解決方法:能夠拆分sql用 where id in (1, 2, ..., 999) or id in (1000, ...)這種方法解決。優化

好的解決方法:
1.用表關聯代替IN;2.在where條件中使用子查詢,如「select  * from b where c in (select  d from e ......)」
這樣的形式。spa

順便在這裏擴充一下in和exists。
在sql優化中,in與exists的區別就是,當括號裏面值少的話,用in效率會比較高,值多的話用exists效率高。效率

與not  in和not  exists不一樣,not exists效率永遠會比not in要高。select

總而言之,在SQL語句中要慎用IN,IN通常只用於參數個數較少的狀況。

方法

相關文章
相關標籤/搜索