Hitachi

ノンストップデータベース HiRDB Version 9 コマンドリファレンス(Windows(R)用)


16.4.1 最適化情報パラメタファイルの項目

最適化情報パラメタファイルに記述する項目の一覧と最適化情報パラメタファイルに記述する項目の内容を次の表に示します。

表16‒6 最適化情報パラメタファイルに記述する項目の一覧

分類

項目名

内容

表最適化情報

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

区間内最大値

表16‒7 最適化情報パラメタファイルに記述する項目の内容

項目名

内容

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文で求められます。

  • 列の定義長※3が32,000バイト以下の場合

  SELECT COUNT(*) FROM 表名 WHERE 列名 IS NULL

  • 列の定義長※3が32,001バイト以上の場合

  WITH W1(WSUBCLM) AS (SELECT SUBSTR(列名,1,255※4)) FROM 表名)

  SELECT COUNT(*) FROM W1 WHERE WSUBCLM IS NULL

N_MAX_DUP_KEY

最も重複が多い列値の重複数を指定します。

最も重複が多い列値の重複数は,次のSQL文で求められます。

  • 列名で指定する列の定義長※3が255バイト以下の場合

  WITH W1(WCOUNT) AS (SELECT COUNT(列名) FROM 表名

   WHERE 列名 IS NOT NULL GROUP BY 列名)

   SELECT MAX(WCOUNT) FROM W1

  • 列名で指定する列の定義長※3が256バイト以上,32,000バイト以下の場合

  SELECT COUNT(SUBSTR(列名,1,255※4)) FROM 表名

   WHERE 列名 IS NOT NULL GROUP BY SUBSTR(列名,1,255※4)

   ORDER BY 1 DESC LIMIT 1

  • 列名で指定する列の定義長※3が32,001バイト以上の場合

  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文で求められます。

  • 列名で指定する列の定義長※2が255バイト以下の場合

  WITH W1(WCOUNT) AS (SELECT COUNT(列名) FROM 表名

   WHERE 列名 IS NOT NULL GROUP BY 列名)

   SELECT MIN(WCOUNT) FROM W1

  • 列名で指定する列の定義長※3が256バイト以上,32,000バイト以下の場合

  SELECT COUNT(SUBSTR(列名,1,255※4)) FROM 表名

   WHERE 列名 IS NOT NULL GROUP BY SUBSTR(列名,1,255※4)

   ORDER BY 1 ASC LIMIT 1

  • 列名で指定する列の定義長※3が32,001バイト以上の場合

  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 」