スケーラブルデータベースサーバ HiRDB Version 8 システム定義(Windows(R)用)

[目次][索引][前へ][次へ]

6.2.2 SQLの最適化に関するオペランド

3) pd_optimize_level = SQL最適化オプション〔,SQL最適化オプション〕…
〜<識別子又は符号なし整数>
SQL最適化オプションを指定します。SQL最適化オプションの機能を次に示します。SQL最適化オプションの各機能については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
SQL最適化オプションの機能 識別子 符号なし
整数
S P
ネストループジョイン強制 "FORCE_NEST_JOIN" 4
複数のSQLオブジェクト作成 "SELECT_APSL" 10
フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ) "FLTS_INC_DATA_BES" 16 ×
ネストループジョイン優先 "PRIOR_NEST_JOIN" 32
フロータブルサーバ候補数の拡大 "FLTS_MAX_NUMBER" 64 ×
ORの複数インデクス利用の優先 "PRIOR_OR_INDEXES" 128
自バックエンドサーバでのグループ化,ORDER BY,DISTINCT集合関数処理 "SORT_DATA_BES" 256 ×
ANDの複数インデクス利用の抑止 "DETER_AND_INDEXES" 512
グループ分け高速化処理 "RAPID_GROUPING" 1024
フロータブルサーバ対象限定(データ取り出しバックエンドサーバ) "FLTS_ONLY_DATA_BES" 2048 ×
データ収集用サーバの分離機能 "FLTS_SEPARATE_COLLECT_SVR" 2064 ×
インデクス利用の抑止テーブルスキャン強制 "FORCE_TABLE_SCAN" 4096
複数インデクス利用の強制 "FORCE_PLURAL_INDEXES" 32768
更新SQLの作業表作成抑止 "DETER_WORK_TABLE_FOR_UPDATE" 131072
探索高速化条件の導出 "DERIVATIVE_COND" 262144
スカラ演算を含むキー条件の適用 "APPLY_ENHANCED_KEY_COND" 524288
プラグイン提供関数からの一括取得機能 "PICKUP_MULTIPLE_ROWS_PLUGIN" 1048576
導出表の条件繰り込み機能 "MOVE_UP_DERIVED_COND" 2097152
(凡例)
S:HiRDB/シングルサーバ
P:HiRDB/パラレルサーバ
○:指定が有効になります。
×:指定しても無効になります。
《オペランドの指定方法》
適用するSQL最適化オプションを選択して,その識別子又は符号なし整数を指定します。識別子で指定する方法と,符号なし整数(計算値)で指定する方法の二つの方法がありますが,通常は識別子で指定してください。
  • 識別子で指定する場合
    「ネストループジョイン強制」及び「複数のSQLオブジェクト作成」を適用する場合は,次のように指定します。
    pd_optimize_level = "FORCE_NEST_JOIN","SELECT_APSL"
  • 符号なし整数で指定する場合
    「ネストループジョイン強制」及び「複数のSQLオブジェクト作成」を適用する場合は,次のように指定します。
    pd_optimize_level = 4,10
     
●HiRDB Version 5.0以前からバージョンアップした場合
HiRDB Version 5.0以前の合計値指定も有効です。最適化オプションを変更する必要がない場合は,HiRDB Version 6以降にバージョンアップしたときにこのオペランドの指定値を変更する必要はありません。また,最適化オプションを追加する場合は次のように指定できます。
(例)
HiRDB Version 5.0で「ネストループジョイン強制」及び「複数のSQLオブジェクト作成」を適用していて,今回「ORの複数インデクス利用の優先」を追加します。
pd_optimize_level = 14,128
ただし,この指定方法はどの機能を適用しているか分かりにくいため,識別子指定に変更することをお勧めします。
《オペランドの規則》
  • 識別子と符号なし整数の混在指定はできません。
●識別子指定の場合
  • SQL最適化オプションを引用符(")で囲んでください。
  • ここで説明したSQL最適化オプションを使用しない場合は"NONE"を指定してください。ただし,NONEとNONE以外の識別子を指定した場合,NONEの指定は無効になります。
  • 識別子は大文字でも小文字でも指定できます。
  • 同じ識別子を2回以上指定しても,1回指定した場合と同じになります。
●符号なし整数指定の場合
  • ここで説明したSQL最適化オプションを使用しない場合は0を指定してください。ただし,0と0以外の符号なし整数を指定した場合,0の指定は無効になります。
  • 同じ符号なし整数を2回以上指定しても,1回指定した場合と同じになります。
《指定値の目安》
指定値の目安については,マニュアル「HiRDB Version 8 UAP開発ガイド」の「SQL最適化オプション」を参照してください。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,次に示す値が仮定されます。
  • HiRDB/シングルサーバの場合
    "PRIOR_NEST_JOIN","PRIOR_OR_INDEXES","DETER_AND_INDEXES","RAPID_GROUPING","DETER_WORK_TABLE_FOR_UPDATE","APPLY_ENHANCED_KEY_COND"
  • HiRDB/パラレルサーバの場合
    "PRIOR_NEST_JOIN","PRIOR_OR_INDEXES","SORT_DATA_BES","DETER_AND_INDEXES","RAPID_GROUPING","DETER_WORK_TABLE_FOR_UPDATE","APPLY_ENHANCED_KEY_COND"
ただし,pd_sysdef_default_optionオペランドにv6compatibleを指定している場合は"SELECT_APSL"が仮定されます。
《注意事項》
  • SQL文中にSQL最適化指定を指定している場合は,このオペランドの指定よりもSQL最適化指定が優先されます。SQL最適化指定については,マニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。
  • ストアドルーチン及びトリガ中のSQL文(CREATE PROCEDURE,CREATE TYPE,ALTER PROCEDURE,CREATE TRIGGER,ALTER ROUTINE,又はALTER TRIGGER)にSQL最適化オプションを指定している場合は,このオペランドの指定よりもSQL文中のSQL最適化オプションが優先されます。
《ほかのオペランドとの関連》
  • フロントエンドサーバ定義にpd_floatable_bes,又はpd_non_floatable_besオペランドを指定している場合には,「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」及び「フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)」の指定は無効になります。
  • pd_indexlock_modeオペランドにKEYを指定している場合,「更新SQLの作業表作成抑止」の指定は無効になります。
《クライアント環境定義との関連》
このオペランドの値はクライアントごとに変更できます。クライアントごとに変更する場合は,クライアント環境定義のPDSQLOPTLVLオペランドを指定してください。PDSQLOPTLVLオペランドについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

 

4) pd_additional_optimize_level = SQL拡張最適化オプション〔,SQL拡張最適化オプション〕…
〜<識別子又は符号なし整数>
SQL拡張最適化オプションを指定します。SQL拡張最適化オプションの機能を次に示します。SQL拡張最適化オプションの各機能については,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
SQL拡張最適化オプションの機能 識別子 符号なし整数
コストベース最適化モード2の適用 "COST_BASE_2" 1
ハッシュジョイン,副問合せのハッシュ実行※1 "APPLY_HASH_JOIN" 2
値式に対する結合条件適用機能 "APPLY_JOIN_COND_FOR_VALUE_EXP" 32
ジョインを含むSQL文の外部サーバ実行の抑止※1※2 "DETER_JOIN_SQL" 67108864
直積を含むSQL文の外部サーバ実行の強制※1※2 "FORCE_CROSS_JOIN_SQL" 134217728
無条件に生成する,外部サーバで実行できる探索高速化条件の導出の抑止※1※2 "DETER_FSVR_DERIVATIVE_COND" 1073741824
注※1 これらの項目は「コストベース最適化モード2の適用」を指定した場合に有効になります。
注※2 これらの項目は外部表を検索する場合に有効になります。それ以外の場合は無効になります。
《オペランドの指定方法》
適用するSQL拡張最適化オプションを選択して,その識別子又は符号なし整数を指定します。通常は識別子で指定してください。
  • 識別子で指定する場合
    「コストベース最適化モード2の適用」及び「ハッシュジョイン,副問合せのハッシュ実行」を適用する場合は,次のように指定します。
    pd_additional_optimize_level = "COST_BASE_2","APPLY_HASH_JOIN"
  • 符号なし整数で指定する場合
    「コストベース最適化モード2の適用」及び「ハッシュジョイン,副問合せのハッシュ実行」を適用する場合は,次のように指定します。
    pd_additional_optimize_level = 1,2
《オペランドの規則》
  • 識別子と符号なし整数の混在指定はできません。
●識別子指定の場合
  • SQL拡張最適化オプションを引用符(")で囲んでください。
  • ここで説明したSQL拡張最適化オプションを使用しない場合は"NONE"を指定してください。ただし,NONEとNONE以外の識別子を指定した場合,NONEの指定は無効になります。
  • 識別子は大文字でも小文字でも指定できます。
  • 同じ識別子を2回以上指定しても,1回指定した場合と同じになります。
●符号なし整数指定の場合
  • ここで説明したSQL拡張最適化オプションを使用しない場合は0を指定してください。ただし,0と0以外の符号なし整数を指定した場合,0の指定は無効になります。
  • 同じ符号なし整数を2回以上指定しても,1回指定した場合と同じになります。
《指定値の目安》
指定値の目安については,マニュアル「HiRDB Version 8 UAP開発ガイド」の「SQL拡張最適化オプション」を参照してください。
《オペランドの省略値》
このオペランドを省略すると,システム共通定義の同じオペランドの指定値が有効となります。システム共通定義の同じオペランドも省略すると,COST_BASE_2が仮定されます。
《注意事項》
  • SQL文中にSQL最適化指定を指定している場合は,このオペランドの指定よりもSQL最適化指定が優先されます。SQL最適化指定については,マニュアル「HiRDB Version 8 SQLリファレンス」を参照してください。
  • ストアドルーチン及びトリガ中のSQL文(CREATE PROCEDURE,CREATE TYPE,CREATE TRIGGER,ALTER PROCEDURE,ALTER ROUTINE,又はALTER TRIGGER)にSQL拡張最適化オプションを指定している場合は,このオペランドの指定よりもSQL文中のSQL拡張最適化オプションが優先されます。
《クライアント環境定義との関連》
このオペランドの値はクライアントごとに変更できます。クライアントごとに変更する場合は,クライアント環境定義のPDADDITIONALOPTLVLオペランドを指定してください。PDADDITIONALOPTLVLオペランドについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。

 

5) pd_floatable_bes = "バックエンドサーバ名"〔,"バックエンドサーバ名"〕…
〜<識別子>((1〜8文字))
フロータブルサーバとして使用するバックエンドサーバを指定します。
ただし,指定したバックエンドサーバをすべてフロータブルサーバとして使用するとは限りません。
通常はデータ取り出しに使用するサーバは,フロータブルサーバとして使用しませんが,このオペランドを指定した場合はデータ取り出しに使用するサーバもフロータブルサーバの候補とします。
《オペランドの規則》
  • 定義されていないバックエンドサーバ名を指定した場合は無視します。
  • すべてが定義されていないバックエンドサーバ名の場合は,このオペランドを無視します。
《ほかのオペランドとの関連》
  • pd_non_floatable_besオペランドを同時に指定している場合,pd_non_floatable_besオペランドを無効とします。
  • pd_floatable_besオペランドを指定すると,pd_optimize_levelオペランドの「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」は適用されません。
  • pd_floatable_besオペランドを指定すると,pd_optimize_levelオペランドの「フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)」は適用されません。

 

6) pd_non_floatable_bes = "バックエンドサーバ名"〔,"バックエンドサーバ名"〕…
〜<識別子>((1〜8文字))
フロータブルサーバとして使用しないバックエンドサーバを指定します。
すべてのバックエンドサーバを指定している場合は,このオペランドを無効とします。
《オペランドの規則》
定義されていないバックエンドサーバ名を指定した場合は無視します。
《ほかのオペランドとの関連》
  • pd_floatable_besオペランドを同時に指定している場合,このオペランドを無効とします。
  • pd_non_floatable_besオペランドを指定すると,pd_optimize_levelオペランドの「フロータブルサーバ対象拡大(データ取り出しバックエンドサーバ)」は適用されません。
  • pd_non_floatable_besオペランドを指定すると,pd_optimize_levelオペランドの「フロータブルサーバ対象限定(データ取り出しバックエンドサーバ)」は適用されません。