問題描述: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通常只用於參數個數較少的狀況。
方法