SQL の制約

以下の表では、Db2 for i データベースマネージャによって課される特定の SQL とデータベースの制限について説明します。

注:
  • システム・ストレージの制限により、ここで指定される制限が無効になる場合があります。 例えば、 最大行サイズを参照してください。
  • ストレージ の制限とは、その制限が使用可能なストレージの量に依存していることを意味します。
  • ステートメント の制限とは、その制限がステートメントの最大長制限に依存していることを意味します。
表 1. ID の長さに関する制約
制限される ID Db2 for i 制限
権限名の最大長 101
相関名の最大長 128
カーソル名の最大長 128
記述子名の最大長 128
外部プログラム名の最大長 (ストリング形式) 2792
外部プログラム名の最大長 (非修飾形式) 10
最も長いホスト ID3 128
パッケージ・バージョン ID の最大長 64
パーティション名の最大長 10
セーブポイント名の最大長 128
スキーマ名の最大長 128
サーバー名の最大長 18
ステートメント名の最大長 128
SQL 条件名の最大長 128
SQL ラベルの最大長 128
非修飾の別名の最大長 128
非修飾の列名の最大長 128
非修飾の制約名の最大長 128
非修飾の特殊タイプ名の最大長 128
非修飾の関数名の最大長 128
非修飾のグローバル変数名の最大長 128
非修飾の索引名の最大長 128
非修飾のマスク名の最大長 128
非修飾のノード・グループ名の最大長 10
非修飾のパッケージ名の最大長 10
非修飾の許可名の最大長 128
非修飾のプロシージャー名の最大長 128
非修飾のシーケンス名の最大長 128
非修飾の特定名の最大長 128
非修飾の SQL パラメーター名の最大長 128
非修飾の SQL 変数名の最大長 128
非修飾のシステム列名の最大長 10
非修飾のシステム・オブジェクト名の最大長 10
非修飾のシステム・スキーマ名の最大長 10
非修飾の表名およびビュー名の最大長 128
非修飾のトリガー名の最大長 128
非修飾の XSR オブジェクト名の最大長 128
XMLELEMENT、XMLFOREST、XMLATTRIBUTES、XMLNAMESPACES、 XMLPI で指定する XML のエレメント名、属性名、接頭部名、処理命令名の最大長 128
XMLTABLE で指定された最も長い XML パス名 128
解析する XML 文書の XML のエレメント名、属性名、接頭部名、処理命令名の最大長 1000
XML スキーマの Uniform Resource Identifier (URI) の最大長 1000
JSON パス名の最大長 128

表 2. 数値の制約
数値の制約 Db2 for i 制限
SMALLINT (短整数) の最小値 -32 768
SMALLINT (短整数) の最大値 +32 767
INTEGER (整数) の最小値 -2 147 483 648
INTEGER (整数) の最大値 +2 147 483 647
BIGINT (長整数) の最小値 -9 223 372 036 854 775 808
BIGINT (長整数) の最大値 +9 223 372 036 854 775 807
10 進数の精度の最大値 63
REAL 値の最大指数 (Emax) 38
最小 REAL 値4 -3.4x1038
最大 REAL 値4 +3.4x1038
REAL 値の最小指数 (Emin) -38
REAL の正の最小値4 +1.18x10-38
最大の負の REAL 値4 -1.18x10-38
DOUBLE 値の最大指数 (Emax) 308
最小 DOUBLE 値4 -1.79x10308
最大 DOUBLE 値4 +1.79x10308
DOUBLE 値の最小指数 (Emin) -308
正の最小 DOUBLE 値4 +2.23x10-308
負の DOUBLE の最大値4 -2.23x10-308
DECFLOAT(16) 値の最大指数 (Emax) 384
最小 DECFLOAT (16) 値5 -9.999999999999999x10384
最大 DECFLOAT (16) 値5 9.999999999999999x10384
DECFLOAT(16) 値の最小指数 (Emin) -383
正の DECFLOAT (16) の最小値5 1x10-383
負の最大 DECFLOAT (16) 値5 -1x10-383
DECFLOAT(34) 値の最大指数 (Emax) 6144
DECFLOAT (34) の最小値5 -9.999999999999999999999999999999999x106144
DECFLOAT (34) の最大値5 9.999999999999999999999999999999999x106144
DECFLOAT(34) 値の最小指数 (Emin) -6143
正の DECFLOAT (34) の最小値5 1x10-6143
負の最大 DECFLOAT (34) 値5 -1x10-6143

  

テーブル3。 ストリングの制約
ストリングの制約 Db2 for i 制限
CHAR (文字) の最大長 (バイト数) 327656
VARCHAR (可変長文字) の最大長 (バイト数) 327396
CLOB の最大長 (バイト数) 2 147 483 647
GRAPHIC の最大長 (2 バイト文字数) 163826
VARGRAPHIC の最大長 (2 バイト文字数) 163696
DBCLOB の最大長 (2 バイト文字数) 1 073 741 823
BINARY の最大長 (バイト数) 327656
VARBINARY の最大長 (バイト数) 327396
BLOB の最大長 (バイト数) 2 147 483 647
直列化された XML の最大長 (バイト数) 2 147 483 647
文字定数の最大長 32740
グラフィック定数の最大長 16370
バイナリー定数の最大長 32740
連結した文字ストリングの最大長 2 147 483 647
連結したグラフィック・ストリングの最大長 1 073 741 823
連結したバイナリー・ストリングの最大長 2 147 483 647
16 進定数桁の最大数 32 762
カタログ・コメントの最大長 20007
列ラベルの最大長 (バイト数) 60
SQL ルーチン・ラベルの最大長 128
表、パッケージ、または別名のラベルの最大長 50
C の NUL 終了ストリングの最大長 327396
C の NUL 終了グラフィックの最大長 163696

 

テーブル4。 XML 制限
XML 制限 Db2 for i 制限
XML スキーマ文書の最大長 (バイト数) 2 147 483 647
解析する XML エンティティーの最大長 1 ギガバイト
内部 XML ツリーの最大深さ 128
テーブル5。 JSON の制限
JSON の制限 Db2 for i 制限
JSON 文書の最大長 (バイト数) 2 147 483 647
テーブル6。 日付/時刻の制約
日付/時刻の制約 Db2 for i 制限
DATE (日付) の最小値 0001-01-01
DATE (日付) の最大値 9999-12-31
TIME (時刻) の最小値 00:00:00
TIME (時刻) の最大値 24:00:00
TIMESTAMP (タイム・スタンプ) の最小値 0001-01-01-00.00.00.000000000000
TIMESTAMP (タイム・スタンプ) の最大値 9999-12-31-24.00.00.000000000000
タイム・スタンプの精度の最小値 0
タイム・スタンプの精度の最大値 12
表 7. データ・リンクの制約
データ・リンクの制約 Db2 for i 制限
DATALINK の最大長 32718
DATALINK コメントの最大長 254
表 8. データベース・マネージャーの制約
データベース・マネージャーの制約 Db2 for i 制限
リレーショナル・データベース
スキーマの最大数 ストレージ
リレーショナル・データベース内の表の最大数 ストレージ
ノード・グループ内のノードの最大数 32
スキーマ
スキーマ内のオブジェクトの最大数 約 1 000 000
表とビュー
表の列の最大数 8000
ビュー内の列の最大数 8000
LOB のない行の最大長 (すべてのオーバーヘッドを含む) 32766
LOB がある行の最大長 (すべてのオーバーヘッドを含む) 3 758 096 383
非パーティション表内の行の最大数 4 294 967 288
データ・パーティション内の行の最大数 4 294 967 288
非パーティション表の最大サイズ 1.7 テラバイト
データ・パーティションの最大サイズ 1.7 テラバイト
1 つのパーティション表内のデータ・パーティションの最大数 256
表パーティション列の最大数 120
ビューまたはマテリアライズ照会表で参照する表の最大数 10008
1 つの表またはビューの従属ビュー、マテリアライズ照会表、および索引の最大数 ストレージ
制約
テーブルにおける制約の最大数 5000
UNIQUE 制約における列の最大数 120
UNIQUE 制約における列の結合後の最大長 (バイト数) 327676
外部キーで参照される列の最大数 120
外部キーで参照される列の結合後の最大長 (バイト単位) 327676
CHECK 制約の最大長 (バイト数) ステートメント
トリガー
テーブルにおけるトリガーの最大数 300
トリガーのカスケード実行時の最大深さ 200
索引
表の索引の最大数 約 15000
索引キーにおける列の最大数 120
索引キーの最大長 327676
非パーティション化索引の最大サイズ 変更の開始16 terabytes変更の終わり
パーティション化索引のパーティションの最大サイズ 変更の開始16 terabytes変更の終わり
SQL
SQL ステートメントの最大長 (バイト数) 2 097 152
1 つの SQL ステートメントで参照する表の最大数 10008
SQL ステートメント内の変数および定数の最大数 327009
選択リスト内のエレメントの最大数 約 800010
WHERE または HAVING 節の述部の最大数 ステートメント
1 つの GROUP BY 文節の列の最大数 GROUP BY の合計長
1 つの GROUP BY 文節の列の最大合計長 3.5 ギガバイト11
CUBE グループのエレメントの最大数 10
1 つの ORDER BY 文節の列の最大数 ORDER BY の合計長
1 つの ORDER BY 文節の列の最大合計長 3.5 ギガバイト 11
階層照会の再帰レベルの最大数   250
副照会で許される最高レベル 256
挿入操作における行の値の最大数 8000
単一の更新操作中の SET 節の最大数 8000
ルーチン
プロシージャーにおけるパラメーターの最大数 200012
関数におけるパラメーターの最大数 200012
表関数の戻り列の最大数 8000
ルーチンのネスト・レベルの最大数 ストレージ
タイプ
配列タイプの最大カーディナリティー。 2 147 483 647
アプリケーション
プリコンパイル済みプログラム中のホスト変数宣言の最大数 ストレージ13
ホスト変数値の最大長 (バイト数) 2 147 483 647
MQ メッセージ CLOB 値の最大長 (バイト数) 2M
MQ メッセージ可変長値の最大長 (バイト数) 32000
プログラムで宣言できるカーソルの最大数 ストレージ
一度にオープンできるカーソルの最大数 ストレージ 14
ロックされた行の作業単位あたりの最大数 500 000 000
作業単位あたりの DDL ステートメントの最大数 131 036
トランザクション内のロケーターの最大数 16 000 000 15
SQLDA の最大サイズ (バイト単位) 16 777 215
準備済みステートメントの最大数 ストレージ
一度にアクティブにできるセーブポイントの最大数 ストレージ
1 つのプロセス内で同時に割り振りできる CLI ハンドルの最大数 160 000 16
パッケージの最大サイズ 1008 メガバイト17
パスの最大長 8843
パス内のスキーマの最大数 268
パスワードの最大長 127
ヒントの最大長 32
プログラム、サービス・プログラムまたはモジュールに関連付けられるスペースの最大サイズ (バイト数) 16 777 216
診断領域の最大サイズ 90K
配列変数の最大サイズ 4GB

1 アプリケーション・リクエスターとして、 Db2 for i は、最大 255 バイトの許可名を送信できます。
2 REXX プロシージャーの場合、限度は 33 です。
3 RPG、COBOL、または REXX プログラムの場合、制限は 64 です。
4 表示される値は近似値です。
5 これらは、DECFLOAT の通常の数値の制限です。 DECFLOAT には、NaN および無限大などの特殊値も含まれており、これらの特殊値も有効です。 また、DECFLOAT は文書化された範囲外の非正規数もサポートします。
6 列が NOT NULL の場合、最大数はもう 1 つです。
7 シーケンスの場合、制限は 500 です。
8 参照されるメンバー (およびパーティション) の最大数も 1000 です。 DELETE および UPDATE ステートメントでは、最大数は 256 です。 複雑な SQL ステートメントでは、参照できる表数は、内部構造によって制限される場合があります。
9 この制限は内部構造によって制限され、ステートメントで定数がどのように使用されているか、および非常に大きいストリング定数または変数が使用されているかによって、より少ない場合があります。
10 この制限は、構文解析される SQL ステートメント用に生成される内部構造のサイズに基づきます。
11 CQE が SELECT ステートメントを処理した場合、限度は 32766 です。 ICU 照合順序または ALWCPYDTA(*NO) が使用されている場合には , この限界は小さくなります。
12 SQL プロシージャーおよび SQL 関数は、最大 2000 個のパラメーターを持つことができます。 外部プロシージャーおよび外部関数のパラメーター数は、 2000 を超えることはできず、言語によって許可されるパラメーターの最大数によって制限されます。
13 RPG/400® および PL/I プログラムでは、古いパラメーター引き渡し技法を使用する場合、限度は約 4000 です。 この制限は、プログラムで使用できるポインターの数によるものです。 それ以外の場合はすべて、オペレーティング・システムの制約に基づいて制限があります。
14 1 つのジョブで同時にオープンできるカーソルの最大数は、約 20 966です。
15 SQL Server モードのトランザクションでのロケーターの最大数は 209 000 です。
16 DRDA 接続ごとに割り振られるハンドルの最大数は 500 です。
17 DRDA パッケージの 最大サイズは、QAQQINI オプションを使用して 500 メガバイトから 1 ギガバイトに増やすことができます。