これらの設定は system.settings で参照でき、ソースコード から自動生成されています。
optimize_and_compare_chain
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 25.2 | 1 | 新しい設定 |
フィルタリング能力を高めるため、AND チェーン内の定数比較を補完します。演算子 <、<=、>、>=、= およびそれらの混在をサポートします。たとえば、(a < b) AND (b < c) AND (c < 5) は (a < b) AND (b < c) AND (c < 5) AND indexHint(b < 5) AND indexHint(a < 5) になります。導出された比較は indexHint でラップされます。これらは索引解析 (主キー、パーティションキー、スキップ索引) に関与して読み取り対象を絞り込みますが、行ごとのコストは発生せず、PREWHERE にも影響しません。異なるテーブルにまたがる式を介して導出された比較も実行可能な状態を保ちます ((t1.a < t2.b) AND (t2.b < 5) から通常の t1.a < 5 が導出されます) 。これは結合の下にプッシュダウンできる唯一の条件であり、元のチェーンでは到達できない結合入力をフィルタリングします。既存の条件と矛盾する導出比較も通常の条件として追加されるため、AND は false に畳み込まれます。
optimize_and_compare_chain_max_hash_work
バージョン履歴
| バージョン | デフォルト値 | コメント |
|---|---|---|
| 26.7 | 5000000 | 比較の `AND` チェーンが非常に多い、または非常に大きいクエリで、`optimize_and_compare_chain` 最適化の処理がクエリ解析の大半を占めないよう、その作業量(ハッシュ化されるクエリツリーノード数で測定)に上限を設ける新しい設定です。以前の値 `0`(無制限)を使うと、最適化に上限がなかった 26.7 より前の動作が再現されるため、`compatibility` をそれ以前のバージョンに設定すると、予算なしで推移的な述語の導出が引き続き行われます。予算を無効にするには `0` に設定します。 |
クエリ解析中の optimize_and_compare_chain 最適化に対する作業予算です。これは getTreeHash によってハッシュ化されるクエリツリーノード数 (この最適化で最も支配的なコスト) で測定されます。最適化の適用中にクエリがこの数を超えるノードをハッシュ化すると、その後はそのクエリの残りの部分に対してこの最適化を適用しなくなります。これにより、比較の AND チェーンが非常に多い、または非常に大きいクエリで、最適化が何も畳み込めないまま解析時間の大半を占めてしまう事態を防げます。早めに打ち切っても常に安全です。単に最適化を見送るだけで、結果が変わることはありません。予算を無効にするには 0 に設定します (無制限) 。