クエリプランの論理プロパティ¶
Prestoは、クエリプランのノードによって生成される結果セットに論理プロパティを関連付けるためのフレームワークを実装しています。これらの論理プロパティは、テーブルに定義された制約、または集計、制限、述語の適用など、クエリプランの中間ノードによって実行される操作から派生する場合があります。Prestoオプティマイザは、これらの論理プロパティを使用して、冗長な操作の削除やその他の論理変換などの最適化を実行できます。
クエリプランにおける論理プロパティの伝播は、セッションプロパティ `exploit_constraints` またはコーディネータの `etc/config.properties` に設定された設定プロパティ `optimizer.exploit_constraints` によって有効になります。論理プロパティの伝播はデフォルトで有効になっています。
論理プロパティの種類¶
Prestoは、以下の論理プロパティを検出し、伝播します。
`KeyProperty` - プランノードによって生成される最終または中間結果セットに保持される、個別の属性のコレクション。
`MaxCardProperty` - プランノードによって生成される最終または中間結果セットの、証明可能な最大行数。
`EquivalenceClassProperty` - プランノードによって生成される最終または中間結果セットに保持される、同等の変数と定数参照のクラス。