問題描述:Oracle數據庫中IN參數個數超過1000
遇到這種情況,想快速解決,數據庫有 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 ......)”
這樣的形式。
順便在這里擴充一下in和exists。
在sql優化中,in與exists的區別就是,當括號里面值少的話,用in效率會比較高,值多的話用exists效率高。
與not in和not exists不同,not exists效率永遠會比not in要高。
總而言之,在SQL語句中要慎用IN,IN一般只用於參數個數較少的情況。