16.4.1 最適化情報パラメタファイルの項目
最適化情報パラメタファイルに記述する項目の一覧と最適化情報パラメタファイルに記述する項目の内容を次の表に示します。
分類 |
項目名 |
内容 |
---|---|---|
表最適化情報 |
NROWS |
表の行数 |
NPAGES |
表のデータページ数 |
|
インデクス最適化情報 |
INDEX |
インデクス名 |
NIPAGES |
インデクスページ数 |
|
NLEVEL |
インデクスの段数 |
|
SEQ_RATIO |
インデクスのシーケンシャル度 |
|
NENTRY |
インデクスのキー値数 |
|
列最適化情報 |
COLUMN |
列名 |
NUNIQUE |
列のユニーク値数 |
|
NNULLS |
列のナル値数 |
|
N_MAX_DUP_KEY |
列の最大重複列値の数 |
|
N_MIN_DUP_KEY |
列の最小重複列値の数 |
|
MAX_VALUE |
列値の最大値 |
|
MIN_VALUE |
列値の最小値 |
|
区間分布情報 |
SECTION_COUNT |
区間分布情報の区間数 |
SECTION_NO |
区間番号 |
|
SEC_TOTAL_COUNT |
区間要素数の累積度数 |
|
SEC_UNIQUE |
区間内ユニーク値数 |
|
SEC_MAX_VALUE |
区間内最大値 |
項目名 |
内容 |
---|---|
NROWS |
表の行数を指定します。 表の行数は,次のSQL文で求められます。 SELECT COUNT(*) FROM 表名 |
NPAGES |
表の使用中データページ数を指定します。 データベース状態解析ユティリティを実行するか,又はマニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。 |
INDEX |
インデクス名を指定します。 指定するインデクスは,-tオプションで指定した表に定義されている必要があります。 なお,指定できるインデクスはB-treeインデクスだけであり,プラグインインデクスは指定できません。 |
NIPAGES |
インデクスの使用中インデクスページ数を指定します。 データベース状態解析ユティリティを実行するか,又はマニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。 |
NLEVEL |
インデクスの段数を指定します。 マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。また,クラスタキーの場合は,データベース状態解析ユティリティで求められます。 |
SEQ_RATIO |
インデクスのシーケンシャル度を指定します。 0〜100の値を指定します。インデクスのキー順にデータが格納されている場合は100,ランダムにデータが格納されている場合は0を指定してください。この値を大きくすると,よりインデクスを使用することになります。 |
NENTRY |
インデクスのキー値数を指定します。
インデクスのキー値数は,次のSQL文で求められます。 <単一列インデクスの場合> SELECT COUNT(DISTINCT インデクス構成列名※1) FROM 表名 <複数列インデクスの場合> WITH W1(WC1,WC2,…) AS (SELECT DISTINCT インデクス構成列名1※1,インデクス構成列名2※1,… FROM 表名) SELECT COUNT(*) FROM W1 |
COLUMN |
列名を指定します。 指定する列は,-tオプションで指定した表になければなりません。ただし,LOB列,抽象データ型列は指定できません。 |
NUNIQUE |
列のユニーク値数を指定します。 列のユニーク値数は,次のSQL文で求められます。 SELECT COUNT(DISTINCT 列名※2) FROM 表名 |
NNULLS |
列のナル値数を指定します。 列のナル値数は,次のSQL文で求められます。
SELECT COUNT(*) FROM 表名 WHERE 列名 IS NULL
WITH W1(WSUBCLM) AS (SELECT SUBSTR(列名,1,255※4)) FROM 表名) SELECT COUNT(*) FROM W1 WHERE WSUBCLM IS NULL |
N_MAX_DUP_KEY |
最も重複が多い列値の重複数を指定します。 最も重複が多い列値の重複数は,次のSQL文で求められます。
WITH W1(WCOUNT) AS (SELECT COUNT(列名) FROM 表名 WHERE 列名 IS NOT NULL GROUP BY 列名) SELECT MAX(WCOUNT) FROM W1
SELECT COUNT(SUBSTR(列名,1,255※4)) FROM 表名 WHERE 列名 IS NOT NULL GROUP BY SUBSTR(列名,1,255※4) ORDER BY 1 DESC LIMIT 1
WITH W1(WSUBCLM) AS (SELECT SUBSTR(列名,1,255※4)) FROM 表名) SELECT COUNT(WSUBCLM) FROM W1 WHERE WSUBCLM IS NOT NULL GROUP BY WSUBCLM ORDER BY 1 DESC LIMIT 1 |
N_MIN_DUP_KEY |
最も重複が少ない列値の重複数を指定します。 最も重複が少ない列値の重複数は,次のSQL文で求められます。
WITH W1(WCOUNT) AS (SELECT COUNT(列名) FROM 表名 WHERE 列名 IS NOT NULL GROUP BY 列名) SELECT MIN(WCOUNT) FROM W1
SELECT COUNT(SUBSTR(列名,1,255※4)) FROM 表名 WHERE 列名 IS NOT NULL GROUP BY SUBSTR(列名,1,255※4) ORDER BY 1 ASC LIMIT 1
WITH W1(WSUBCLM) AS (SELECT SUBSTR(列名,1,255※4)) FROM 表名) SELECT COUNT(WSUBCLM) FROM W1 WHERE WSUBCLM IS NOT NULL GROUP BY WSUBCLM ORDER BY 1 ASC LIMIT 1 |
MAX_VALUE※5 |
列値の最大値を指定します。 列値の最大値は,次のSQL文で求められます。 SELECT MAX(列名※6) FROM 表名 |
MIN_VALUE※5 |
列値の最小値を指定します。 列値の最小値は,次のSQL文で求められます。 SELECT MIN(列名※6) FROM 表名 |
SECTION_COUNT |
区間分布情報の区間数を指定します。 列値の種類数が100以下の場合は,列値の種類数を設定します。列値の種類数が100より多い場合は,100を設定します。 なお,この指定は区間分布情報の指定より前に記述しなければなりません。また,この指定値は,区間分布情報の指定数と同じ値にしてください。 |
SECTION_NO |
該当する区間の区間番号を1〜区関数の範囲内で指定します。 |
SEC_TOTAL_COUNT |
区間要素数の累積度数を指定します。 区間要素数の累積度数は,次の計算式で求められます。 (列値の種類数÷100)×該当する区間番号 なお,列値の種類数÷100が割り切れない場合は,最終区間の区間分布情報の定義時に,ヒストグラム累積度数に列値の種類数を設定します。 |
SEC_UNIQUE |
該当する区間内の列値のユニーク値数を指定します。 |
SEC_MAX_VALUE |
該当する区間内の列値の最大値を指定します。 |
- 注※1
-
インデクス構成列名に指定する列の定義長が256バイト以上の場合は,「インデクス構成列名」を「SUBSTR(インデクス構成列名,1,255※4)」に置き換えます。
- 注※2
-
列名で指定する列の定義長が256バイト以上の場合は,「列名」を「SUBSTR(列名,1,255※4)」に置き換えます。
- 注※3
-
定義長の単位はバイトです。各国文字列データ型の場合は,定義長×2となります。
- 注※4
-
列のデータ型が文字データ型,及びBINARY型の場合は255となります。各国文字列データ型,及び混在文字列データ型の場合は127となります。
- 注※5
-
MAX_VALUEは,ディクショナリ表SQL_COLUMN_STATISTICSのRANGE_VALUES列の32バイト目に格納されます。
MIN_VALUEは,ディクショナリ表SQL_COLUMN_STATISTICSのRANGE_VALUES列の48バイト目に格納されます。ただし,列名で指定する列のデータ型がDECIMAL型,又はNUMERIC型で,精度が32けた以上の場合は,列の定義長※3に32バイトを足した位置に格納されます。
- 注※6
-
列の定義長が256バイト以上の場合は,次のように置き換えてください。
-
列のデータ型がCHAR,及びBINARYのときは,「列名」を「SUBSTR(列名,1,255)」に置き換えます。
-
列のデータ型がNCHAR,及びMCHARのときは,「列名」を「SUBSTR(列名,1,127)」に置き換えます。
-
列のデータ型がVARCHAR,NVARCHAR,及びMVARCHARのときは,「列名」を次の指定に置き換えます。
「CASE LENGTH(列名) WHEN 0 THEN ‘’ WHEN 1 THEN SUBSTR(列名,1,1) WHEN 2 THEN SUBSTR(列名,1,2) WHEN 3 THEN SUBSTR(列名,1,3) WHEN 4 THEN SUBSTR(列名,1,4) WHEN 5 THEN SUBSTR(列名,1,5) WHEN 6 THEN SUBSTR(列名,1,6) WHEN 7 THEN SUBSTR(列名,1,7) WHEN 8 THEN SUBSTR(列名,1,8) WHEN 9 THEN SUBSTR(列名,1,9) WHEN 10 THEN SUBSTR(列名,1,10) WHEN 11 THEN SUBSTR(列名,1,11) WHEN 12 THEN SUBSTR(列名,1,12) WHEN 13 THEN SUBSTR(列名,1,13) ELSE SUBSTR(列名,1,14) END 」
-