sql >> データベース >  >> RDS >> Oracle

なぜoracleIN句は静的データに対してのみ1000の制限があるのですか?

    これは、式リストの制限です:

    カンマで区切られた式のリストには、1000個以下の式を含めることができます。

    なぜ1000?おそらく、実装にはある種の制限が必要であり、それはおそらく十分すぎるように思われました。特にINの場合、制限のパフォーマンス上の理由もある可能性があります。または、その制限が数十年前に設定されたときに確かにあった可能性があります。 複数のORに変換されます この場合のオプティマイザーによるステートメント(実行プランを見ればわかります)。

    とにかくサブクエリとして他のデータから導出できない固定値を使用して、その近くに到達する必要がある合理的なシナリオを思い付くのに苦労しました。

    たとえば、テーブルに1000列を超えることはできないという論理データベースの制限にある程度関係しているのではないかと思います。挿入ステートメントで式リストを使用して、挿入される列と値の両方をリストするため、式リストはそれに一致する必要がありますが、それを超える理由はない可能性があります。

    もちろん推測です...ソフトウェアの内部を見なければ、決定的な答えを得る可能性は低いでしょう。



    1. IRI WorkbenchでのInformix(IDS12 DB)への接続

    2. oraclejdbcドライバーバージョンの狂気

    3. 上位nパーセント上位n%

    4. コマンドが同期していません。現在、このコマンドを実行することはできません