From b20195c13e42a2444699683d501fd93b84294689 Mon Sep 17 00:00:00 2001 From: Shigeru Hanada Date: Mon, 16 Apr 2012 19:26:58 +0900 Subject: [PATCH] =?utf8?q?=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF?= =?utf8?q?=E3=83=88=E5=90=8D=E3=81=AB=E9=96=A2=E3=81=99=E3=82=8B=E8=A8=98?= =?utf8?q?=E8=BF=B0=E3=82=92=E6=95=B4=E7=90=86=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit オブジェクト名の重複に関する記述は「使用上の注意と制約」にあるので 「使い方」からは削除した。また、「使用上の注意と制約」のオブジェクト名 に関する項目が長くなっていたので、二つに分割した。 --- doc/pg_hint_plan-ja.html | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/pg_hint_plan-ja.html b/doc/pg_hint_plan-ja.html index dd6c139..68815c1 100755 --- a/doc/pg_hint_plan-ja.html +++ b/doc/pg_hint_plan-ja.html @@ -87,7 +87,7 @@ LOAD postgres=#

ヒントの記述方法

-

ヒントはクエリの前のブロックコメント内に、スペース、タブまたは改行のいずれかで区切って記述してください。ヒントの対象がテーブルの場合は、テーブル名または別名(エイリアス)で指定してください。ただし、スキーマが異なる同じ名前のテーブルを1クエリ中に用いる場合は、別名で指定してください。これは、クエリ中の特定のテーブルを指定できるようにするためです。

+

ヒントはクエリの前のブロックコメント内に、スペース、タブまたは改行のいずれかで区切って記述してください。ヒントの対象は、カッコ内にオブジェクト名または別名(エイリアス)で指定してください。

以下の例では、HashJoinとSeqScanヒントにより、pgbench_accountsテーブルに対するSeq Scanの結果をHash Joinする実行計画が選択されています。

@@ -174,8 +174,11 @@ postgres-#   ORDER BY a.aid;
 
 postgres=# 
-
オブジェクト名の指定方法
-

ヒント対象のオブジェクト名に小文字とアンダースコア(_)以外の文字(大文字、数字、空白スペースなど)を含む場合は、ダブルクォート(")で囲んでください。

また、クエリ中に同一名称のテーブルが複数回出現する場合(スキーマ違いや同一テーブルの複数回使用など)は、テーブルに別名をつけてそれぞれのテーブルを区別してください。以下の例の1つ目のSQL文では、MergeJoin(t1 t1)をヒントに指定したとき、ヒント対象のオブジェクトが特定できずにエラーになっています。2つ目のSQL文では、各テーブルにptやstという別名をつけているため、実行計画作成時にヒントで指定した通りにMerge Joinを選択しています。 +

オブジェクト名の引用
+

ヒント対象のオブジェクト名に小文字とアンダースコア(_)以外の文字(大文字、数字、空白スペースなど)を含む場合は、ダブルクォート(")で囲んでください。

+
+
同一名称テーブルの区別
+
スキーマ違いや同一テーブルの複数回使用などでクエリ中に同一名称のテーブルが複数回出現する場合は、テーブルに別名をつけてそれぞれのテーブルを区別してください。以下の例の1つ目のSQL文では、MergeJoin(t1 t1)をヒントに指定したとき、ヒント対象のオブジェクトが特定できずにエラーになっています。2つ目のSQL文では、各テーブルにptやstという別名をつけているため、実行計画作成時にヒントで指定した通りにMerge Joinを選択しています。

 postgres=# /* MergeJoin(t1 t1)*/
-- 
2.11.0