postgresqlinternals icon indicating copy to clipboard operation
postgresqlinternals copied to clipboard

8. パース、リライト、オプティマイズ の GEQO の join組み合わせパターン数

Open choplin opened this issue 10 years ago • 2 comments

joinのplan treeは組み合わせ数を限定する為に、left deep treeのみを対象にしていることに触れたほうがいいかも知れません。n! である理由が明確になるので。

choplin avatar May 05 '14 03:05 choplin

ここ、自分もまだよく分かってないんですよね。実は。 講義中も飛ばしてしまったところなので。 もうちょっと頭の中を整理したら説明を追加したいと思います。

ちなみに、この辺のGEQOの説明ってコード読むべし? READMEか何かありましたっけ?

snaga avatar May 05 '14 04:05 snaga

GEQOそのものではなくて、Join OrderingをDPでやるかGEQOでやるかの選択なので、コードだとココらへんですね。 https://github.com/postgres/postgres/blob/REL9_3_4/src/backend/optimizer/path/allpaths.c#L1495

READMEだとbackend/optimiser/READMEのJoin Tree Constructionとか https://github.com/postgres/postgres/blob/REL9_3_4/src/backend/optimizer/README#L67

GEQOじゃない場合の計算量はstandard_join_searchの実装を読めば分かるはず(読んでませんが…)

あと、コード眺めてたらLeft Deep Tree以外も考慮しているみたいです。すいません、間違ってました。

choplin avatar May 07 '14 08:05 choplin