SQL IN句に1000を超える項目を入れることはできますか?私たちは、Oracleデータベースで問題を処理していませんでした。SQL IN句1000項目の制限
はい、1000個以上の項目をSQL IN句に挿入するにはどうすればよいですか?
私は他に何ができますか?
SQL IN句に1000を超える項目を入れることはできますか?私たちは、Oracleデータベースで問題を処理していませんでした。SQL IN句1000項目の制限
はい、1000個以上の項目をSQL IN句に挿入するにはどうすればよいですか?
私は他に何ができますか?
IN句をINNER JOIN句に変換する必要があります。
あなたは、この他の1のようなクエリでは、この1
SELECT foo
FROM bar
WHERE bar.stuff IN
(SELECT stuff FROM asdf)
のようなクエリを変換することができます。
SELECT b.foo
FROM (
SELECT DISTINCT stuff
FROM asdf) a
JOIN bar b
ON b.stuff = a.stuff
また、性能の多くを得ることができます
洞察のために+1 – Jeune
他の回答(または他の回答の質問)のいずれかに記載されていない。このため、別の回避策があります:文の
任意のようなx in (1,2,3)
は(1,x) in ((1,1), (1,2), (1,3))
と書き換えられ、1000要素の制限は適用されなくなります。私はx
の索引でテストし、Oracleがアクセス述部とレンジ・スキャンを使用していることを示す計画をまだ説明していません。
+1クールトリック:) - 10,001要素でテスト - パフォーマンスは苦しんでいるようだ –
それは、クールなトリックと思わなかった – PoX
私の好きな答え! – TrojanName
別の方法:
SELECT COL1, COL2, COL3 FROM YOUR_TABLE
WHERE 1=1
AND COL2 IN (
SELECT VAL1 as FAKE FROM DUAL
UNION
SELECT VAL2 as FAKE FROM DUAL
UNION
SELECT VAL3 as FAKE FROM DUAL
--...
)
両方の代わりに 'UNION'と' VALUES'コンストラクタの代わりに 'UNION ALL'を使うべきです。 – Hogan
私たちは、同じ変数に複数の "IN" 文を持つことができます。
select val
from table
where val in (1,2,3,...)
or
val in (7,8,9,....)
の可能重複[のOracle SQL::IN句内の1000個の以上のアイテムを使用する方法](http://stackoverflow.com/questions/2401066/oracle-sql-how EX用
1000-items-than-in-clause) –
重複していることを除けば、理由のためにin節の制限があることをお知らせしたいと思います。非常にリソース集中的なクエリです。あなたは@Jonathanが言及したことを行うべきです。 –
[Oracle IN句に1000を超える値を入れる方法](http://stackoverflow.com/questions/400255/how-to-put-more-than-1000-values-into-an-oracle -in-clause) –