in句の上限_oracle,PostgreSQL,mySQL比較
なんとなくイメージ的に、in句の上限って1000だっけ、って思って改めて調べたら、
DBによりました。
oracle=1000
postgreSQL=2000上限無し →こちらは2000個ではなく、語彙の長さが2kバイトのようでした。
mySQL=上限無し(但しSQL文字数上限に引っかかる)
※指摘頂き、修正します。
postgreSQLは2000個を超えても大丈夫みたいで、inに使用する1つの文字の長さ上限が2kバイトのようです。
参考:
https://www.postgresql.jp/document/9.5/html/textsearch-limitations.html
以下、過去に書いたものはミスリードになるので、消し文字にします。
更に、下の参考サイト様で書いてある方法で、PostgreSQLで2000上限を突破する方法があるようです。
select unnest(ARRAY[....複数設定]) as dat
この方法で配列を疑似的にテーブル扱いとしてぶっこんで
そのまま使えるようです。
ARRAYが配列表現。
unnestが配列→行変換。
試しに文字型、int型の両方でサンプルを作ってみました。
select unnest(ARRAY['str1','str2','str_z']) as dat
select unnest(ARRAY[1,2,3]::int[]) as dat
参考:
http://kei0310.info/?p=210
https://qiita.com/choplin/items/9d5e2ff8721fb9509bf8
なんとなくイメージ的に、in句の上限って1000だっけ、って思って改めて調べたら、
DBによりました。
oracle=1000
postgreSQL=
mySQL=上限無し(但しSQL文字数上限に引っかかる)
※指摘頂き、修正します。
postgreSQLは2000個を超えても大丈夫みたいで、inに使用する1つの文字の長さ上限が2kバイトのようです。
参考:
https://www.postgresql.jp/document/9.5/html/textsearch-limitations.html
以下、過去に書いたものはミスリードになるので、消し文字にします。
select unnest(ARRAY[....複数設定]) as dat
この方法で配列を疑似的にテーブル扱いとしてぶっこんで
そのまま使えるようです。
ARRAYが配列表現。
unnestが配列→行変換。
試しに文字型、int型の両方でサンプルを作ってみました。
select unnest(ARRAY['str1','str2','str_z']) as dat
select unnest(ARRAY[1,2,3]::int[]) as dat
参考:
http://kei0310.info/?p=210
https://qiita.com/choplin/items/9d5e2ff8721fb9509bf8
コメント
コメント一覧 (2)
参考)
https://www.postgresql.jp/document/9.5/html/textsearch-limitations.html
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13157091913
https://www.generacodice.com/jp/articolo/87609/PostgreSQL---max-number-of-parameters-in-%238220%3BIN%238221%3B-clause
本文も修正しました。
確かにPostgreSQLのin句自体に上限はなさそうでした。
ちなみに他にも2000個と読み違えてる記事があったようで、私もそれを参考にしていたようです。