5.8.4 B-treeインデクスのキー長(KEYSZ)の求め方
B-treeインデクスのキー長(変数KEYSZ)の計算方法を次に示します。
まず,次に示す図に従ってB-treeインデクスの種別を特定してください。
次に,特定したB-treeインデクスの種別ごとの計算式によって,KEYSZを求めてください。ただし,各インデクス構成列のキー長は,次に示す表を参照してください。
項番 |
分類 |
データ型 |
キー長(単位:バイト) |
|
---|---|---|---|---|
1 |
数データ |
INTEGER |
8 |
|
2 |
BIGINT |
|||
3 |
SMALLINT |
4 |
||
4 |
DECIMAL(m,n) NUMERIC(m,n) |
1≦m≦4 |
2 |
|
5 |
5≦m≦8 |
4 |
||
6 |
9≦m≦16 |
8 |
||
7 |
17≦m≦38 |
16 |
||
8 |
DOUBLE PRECISION |
8 |
||
9 |
FLOAT |
|||
10 |
文字データ |
CHARACTER(n) |
n |
|
11 |
VARCHAR(n) |
d |
||
12 |
日時データ |
DATE |
4 |
|
13 |
TIME(p) |
3+↑p÷2↑ |
||
14 |
TIMESTAMP(p) |
7+↑p÷2↑ |
||
15 |
バイナリデータ |
BINARY(n) |
n |
|
16 |
VARBINARY(n) |
d |
- (凡例)
-
d:実際のデータ長
m,n:正の整数
p:0,3,6,9または12
(1) 単一列インデクスの場合
- 計算式(単一列インデクス)(単位:バイト)
-
KEYSZ= flag_size+key_size
- 変数の説明
-
-
flag_size
次に示すどれかの値(単位:バイト)
・インデクス構成列が,VARCHAR列またはVARBINARY列以外の場合:0
・インデクス構成列が,定義長255バイト以下のVARCHAR列またはVARBINARY列の場合:1
・インデクス構成列が,定義長256バイト以上のVARCHAR列またはVARBINARY列の場合:2
-
key_size
インデクス構成列のキー長(単位:バイト)
-
(2) 固定長列だけの複数列インデクスの場合
計算式(固定長列だけの複数列インデクス)(単位:バイト)
- 変数の説明
-
-
idx_col_num
インデクス構成列の数
-
flag_null
次に示すどちらかの値(単位:バイト)
・インデクス構成列中にナル値を含まないキーの場合:0
・インデクス構成列中にナル値を含むキーの場合:1
-
key_size(i)
i番目のインデクス構成列のキー長(単位:バイト)
-
(3) 可変長列を含む複数列インデクスの場合
計算式(可変長列を含む複数列インデクス)(単位:バイト)
- 変数の説明
-
-
idx_col_num
インデクス構成列の数
-
flag_type
次に示すどちらかの値(単位:バイト)
・B-treeインデクスを構成する列の長さが255バイト以下の場合:1
・B-treeインデクスを構成する列の長さが256バイト以上の場合:2
複数列インデクスを構成する列の長さについては,マニュアルHADB SQLリファレンスの定義系SQLのCREATE INDEX(インデクスの定義)を参照してください。
-
key_size(i)
i番目のインデクス構成列のキー長(単位:バイト)
-