GEQOのモジュールは、巡回セールスマン問題(TSP)に似た問い合わせ最適化問題の解決策として意図されています。 可能な問い合わせプランは、整数の文字列としてコード化されます。 それぞれの文字列は、問い合わせの1つのリレーションから次へと結合の順番を表します。 たとえば、以下問い合わせツリーは整数文字列「4-1-3-2」によってコード化されています。
/\ /\ 2 /\ 3 4 1
これが意味するのは、まずリレーション「4」と「1」を、次に「3」を、そして「2」を結合するということです。 ここで1、2、3、4はPostgreSQLオプティマイザ内でリレーションIDを表します。
GEQOモジュールの一部はD. WhitleyのGenitorアルゴリズムを適合させたものです。
PostgreSQLにおけるGEQOの実装特有の特徴は下記のとおりです。
定常状態GAの使用(世代全体の置き換えではなく、個体群の中で適合度の低いものだけの置き換え)は、よりよい問い合わせ計画へのすばやい収束を可能にします。 これは、妥当な時間内での問い合わせ処理にはきわめて重要なものです。
GAによるTSPの解決策のエッジ損失を低く抑えるために特別に作られた、エッジ再交配交叉を使用します。
TSPの合法な巡回を行うために必要な回復処理が必要ないように、遺伝的演算子の突然変異は低くしてあります。
GEQOモジュールにより、PostgreSQL問い合わせオプティマイザが、大きな結合問い合わせをしらみつぶし探策以外の方法で実行することが可能になります。