query_plan_aggregation_bucket_top_k
最終集約の出力にLIMIT n 付きの ORDER BY を適用し、プランによってバケットごとの選択が正確であることを証明できる場合に、集約の最終変換時に各二段階バケットの上位 n グループのみをその順序でマテリアライズするクエリプランレベルの最適化を切り替えます。結果は正確です。自身のバケットで上位 n に入らないグループには、グローバルでは少なくとも n 個のグループが先行するため、グローバルの top n に入ることはありません。
設定 query_plan_enable_optimizations が 1 の場合にのみ有効です。
設定可能な値:
- 0 - 無効化
- 1 - 有効化
query_plan_aggregation_in_order
集約における in-order のクエリプランレベル最適化を切り替えます。 設定query_plan_enable_optimizations が 1 の場合にのみ有効です。
これは開発者がデバッグ目的でのみ使用すべき、上級者向けの設定です。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_convert_any_join_to_semi_or_anti_join
JOIN の後のフィルタが、不一致の行または一致した行に対して常に false と評価される場合に、ANY JOIN を SEMI JOIN または ANTI JOIN に変換できるようにしますquery_plan_convert_join_to_in
出力カラムが左テーブルにのみ関連している場合に、JOIN を IN を使ったサブクエリに変換できるようにします。非 ANY JOIN (たとえばデフォルトの ALL JOIN) では、誤った結果になる可能性があります。
query_plan_convert_outer_join_to_inner_join
JOIN 後のフィルタで常にデフォルト値が除外される場合、OUTER JOIN を INNER JOIN に変換できるようにします
query_plan_direct_read_from_text_index
クエリプランで、転置テキスト索引のみを使用した全文検索のフィルタリングを可能にします。query_plan_display_internal_aliases
EXPLAIN PLAN で、元のクエリで指定された別名ではなく、内部別名 (__table1 など) を表示します。query_plan_enable_multithreading_after_window_functions
ウィンドウ関数の評価後にマルチスレッドを有効にし、並列ストリーム処理を可能にしますquery_plan_enable_optimizations
クエリプランレベルでのクエリ最適化の有効/無効を切り替えます。これは上級者向けの設定であり、開発者がデバッグ目的にのみ使用してください。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - クエリプランレベルのすべての最適化を無効にする
- 1 - クエリプランレベルの最適化を有効にする (ただし、個々の最適化はそれぞれの設定によって無効にされる場合があります)
query_plan_execute_functions_after_sorting
ソート処理の後に式を移動するクエリプランレベルの最適化を切り替えます。 この設定は、query_plan_enable_optimizations が 1 の場合にのみ有効です。
これは開発者がDebug目的でのみ使用すべきexpert-level settingです。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_filter_push_down
実行計画内でフィルターをより下位へ押し下げる、クエリプランレベルの最適化の有効/無効を切り替えます。 設定 query_plan_enable_optimizations が 1 の場合にのみ有効です。これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用すべきです。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_fuse_filter_into_array_join
ARRAY JOINされた要素カラムに対するフィルターをARRAY JOINステップに統合する、クエリプランレベルの最適化を切り替えます。展開前に要素レベルで配列をフィルタリングするため、フィルターで除外された要素が展開または複製されることはありません。
設定query_plan_enable_optimizationsが1の場合にのみ有効です。
これは開発者がデバッグ目的でのみ使用すべき、上級者向けの設定です。この設定は将来、後方互換性のない変更が加えられたり、削除されたりする可能性があります。
query_plan_join_shard_by_pk_ranges
両方のテーブルで、結合キーに PRIMARY KEY のプレフィックスが含まれている場合は、JOIN に対して分片化を適用します。hash、parallel_hash、full_sorting_merge、parallel_full_sorting_merge アルゴリズムでサポートされています。通常、クエリの高速化にはつながりませんが、メモリ消費量を抑えられる場合があります。query_plan_join_swap_table
クエリプランにおいて、結合のどちら側をビルドテーブル (inner とも呼ばれ、ハッシュ結合ではハッシュテーブルに挿入される側) にするかを決定します。この設定は、JOIN ON 句を使用する ALL join strictness でのみサポートされています。設定可能な値は次のとおりです。
- ‘auto’: どのテーブルをビルドテーブルとして使用するかをプランナーが決定します。
- ‘false’: テーブルを入れ替えません (右テーブルがビルドテーブルになります) 。
- ‘true’: 常にテーブルを入れ替えます (左テーブルがビルドテーブルになります) 。
query_plan_lift_up_array_join
実行計画内で ARRAY JOIN を上位に移動する、クエリプランレベルの最適化を切り替えます。 この設定は、query_plan_enable_optimizations が 1 の場合にのみ有効です。これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は、将来後方互換性のない形で変更されるか、削除される可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_lift_up_union
クエリプラン内のより大きな部分木をユニオンへ移動し、追加の最適化を可能にするクエリプランレベルの最適化をトグルします。 この設定はquery_plan_enable_optimizations が 1 の場合にのみ有効です。
これは開発者がデバッグ用途でのみ使用すべき上級者向けの設定です。将来的に後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_lower_array_join_function
式内のarrayJoin 関数を実際の ARRAY JOIN ステップに変換するクエリプランレベルの最適化を有効または無効にします。これにより、遅延実行レプリケーションやフィルター融合を含む、ARRAY JOIN 句と同じ実行機構で処理されます。
設定 query_plan_enable_optimizations が 1 の場合にのみ有効です。
これは開発者によるデバッグ目的に限って使用すべき、上級者向けの設定です。この設定は今後、後方互換性のない変更が加えられたり、削除されたりする可能性があります。
query_plan_max_limit_for_join_lazy_indexing
JOIN の遅延索引最適化でクエリプランを使用できる上限値を制御します。0 の場合、制限はありません。query_plan_max_limit_for_lazy_materialization
遅延マテリアライゼーションの最適化にクエリプランを使用できる最大制限値を制御します。0 の場合、制限はありません。query_plan_max_limit_for_top_k_optimization
minmax スキップ索引と動的しきい値フィルタリングを使用した TopK 最適化のクエリプラン評価を可能にする最大制限値を制御します。0 の場合、制限はありません。 この設定は、enable_group_by_top_k_optimization の動作も制御します。query_plan_max_optimizations_to_apply
クエリプランに適用する最適化の総数を制限します。設定 query_plan_enable_optimizations を参照してください。 複雑なクエリで最適化に時間がかかりすぎるのを防ぐのに役立ちます。 EXPLAIN PLAN クエリでは、この上限に達すると最適化の適用を停止し、その時点のプランをそのまま返します。 通常のクエリ実行では、実際の最適化回数がこの設定値を超えると、例外が発生します。これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用すべきです。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
query_plan_max_set_size_for_projection_match
projection matcher が 2 つの Set が等しいかどうかを判定する際に、内容ハッシュを計算して比較するIN 句の Set の最大行数です。これを超える Set は不一致として扱われ、projection はスキップされます。0 を指定すると内容ハッシュ比較は完全に無効化されます。この場合、IN 句の Set を含む node では projection match は決して成功しません。
aggregate projection matcher (および、IN 句の Set を比較する必要がある将来の projection matcher) で使用されます。内容ハッシュの計算量は、Set の elements 数に対して O(N log N) です。この設定は、クエリまたは projection に多数の IN 句が現れる場合に、プランニング時に発生するコストを抑えるためのものです。
query_plan_max_step_description_length
EXPLAIN PLAN におけるステップの説明の最大長。query_plan_merge_expression_into_join
JOIN 順序の最適化時に、式を JOIN ステップにマージできるようにします。query_plan_merge_expressions
連続するフィルタをマージするクエリプランレベルの最適化を切り替えます。 この設定は、query_plan_enable_optimizations が 1 の場合にのみ有効です。これは、開発者がデバッグ目的でのみ使用すべき高度な設定です。この設定は、将来的に後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_merge_filter_into_join_condition
フィルターをJOIN 条件にマージし、CROSS JOIN を INNER に変換できるようにします。
query_plan_merge_filters
クエリプラン内のフィルタをマージできるようにします。query_plan_min_columns_for_join_lazy_indexing
JOIN で遅延索引最適化を有効にするために必要な、左側の payload カラムの最小数を制御します。0 はこの最適化が無効であることを意味します。query_plan_optimize_count_from_text_index
一致する行をマテリアライズすることなく、テキスト索引のポスティングリストのカーディナリティから直接SELECT count() ... WHERE <text search predicate> に応答できるようにします。
query_plan_direct_read_from_text_index が有効な場合にのみ有効です。
query_plan_optimize_join_order_algorithm
クエリプランの最適化時に試行する JOIN 順序アルゴリズムを指定します。利用可能なアルゴリズムは次のとおりです。- ‘greedy’ - 基本的な貪欲アルゴリズムです。高速に動作しますが、最適な JOIN 順序にならない場合があります
- ‘dpsize’ - 現時点では INNER JOIN のみに対応する DPsize アルゴリズムを実装します。考えられるすべての JOIN 順序を検討して最適なものを見つけますが、テーブル数や JOIN 条件が多いクエリでは遅くなることがあります。
- ‘dpsub’ - INNER JOIN と INNER JOIN 以外の JOIN の両方に対応する DPsub アルゴリズムを実装します。考えられるすべての JOIN 順序を検討して最適なものを見つけますが、テーブル数や JOIN 条件が多いクエリでは遅くなることがあります。
- ‘dphyp’ - 現時点では INNER JOIN のみに対応する DPhyp (ハイパーグラフ分割による動的計画法) アルゴリズムを実装します。
dpsizeと同じ探索空間を調べますが、連結された部分グラフのペアだけを列挙するため、クロス積を考慮しない代わりに、スパースな JOIN グラフでは中間 JOIN の数を減らせます 複数のアルゴリズムは、たとえばdphyp,greedyのようにカンマ区切りのリストで指定できます。指定した順に試行され、あるアルゴリズムでクエリを処理できない場合 (たとえば OUTER JOIN や非連結なコンポーネントがある場合) は、フォールバックとして次のアルゴリズムが使用されます。
query_plan_optimize_join_order_conflict_detector
dpsub JOIN 順序アルゴリズムにのみ影響します。DPsub がどの JOIN の並べ替えを有効とみなすかを判定するために使用する conflict detector を選択します。指定できる値は次のとおりです。
''(デフォルト) - conflict detector を使用せず、DPsub は relation ごとのON句による制限を使用します'a'- CD-A conflict detector。正しいが不完全です'c'- CD-C conflict detector。正しく完全です
query_plan_optimize_join_order_limit
同じサブクエリ内の JOIN 順序を最適化します。現在のところ、ごく限られたケースでのみサポートされています。 値は、最適化対象とするテーブルの最大数です。query_plan_optimize_join_order_max_searched_plans
query_plan_optimize_join_order_algorithm で、JOIN 順序オプティマイザが打ち切って次のアルゴリズムにフォールバックするまでに列挙できる部分プランの最大数です。
これにより、クリークやスターのように探索空間が指数関数的に増大する密な JOIN グラフにおいて、optimization 時間を決定論的に制限できます (実時間には依存しません) 。
制限を無効にするには 0 に設定します。既定の query_plan_optimize_join_order_limit では探索が常にこの上限を十分下回るため、影響はありません。
query_plan_optimize_join_order_randomize
0 以外の値を設定すると、JOIN 順序オプティマイザは実際の統計の代わりに、ランダムに生成されたカーディナリティと NDV を使用します。 1 に設定するとランダムシードが生成され、1 より大きい値に設定すると、その値がシードとして直接使用されます。 これは、異なる JOIN 順序によって発生するエラーを見つけるためのテストを目的としています。query_plan_optimize_lazy_final
主キーのセットを構築し、それを索引解析に使用することで、ReplacingMergeTree に対する FINAL 付きの読み取りを最適化します。query_plan_optimize_lazy_materialization
遅延マテリアライゼーションの最適化でクエリプランを使用します。query_plan_optimize_lazy_materialization_for_file
file テーブル関数および File テーブルエンジンを使用してローカル Parquet ファイルを読み取る際に、遅延マテリアライゼーションの最適化を使用します。ORDER BY ... LIMIT n クエリでは、ソートとフィルタリングに不要なカラムは、LIMIT 後に残る n 行に対してのみ読み取られます。query_plan_optimize_lazy_materialization が有効な場合にのみ有効です。
query_plan_optimize_lazy_materialization_for_object_storage
オブジェクトストレージから Parquet ファイル (Iceberg テーブルを含む) を読み取る際に、遅延マテリアライゼーションの最適化を使用します。ORDER BY ... LIMIT n クエリでは、ソートやフィルタリングに不要なカラムは、LIMIT の結果として残った n 行についてのみ読み取られます。query_plan_optimize_lazy_materialization が有効な場合にのみ有効です。
query_plan_optimize_prewhere
サポートされているストレージで、フィルタをPREWHERE式にプッシュダウンできるようにしますquery_plan_propagate_predicate_across_join
等価結合の一方の側にあるフィルターの conjunct を、等価キーの substitution によってもう一方の側へコピーするクエリプランレベルの最適化を切り替えます。これにより、もう一方の側の主キー / 索引の pruning でその conjunct を利用できるようになります。 この最適化が適用されるのは、フィルターとMergeTree の読み取りが式ステップおよびフィルターステップのみを挟んで join と隔てられており、かつコピー対象の conjunct が主キーカラムと定数を比較している場合(定数の Set を用いた IN を含む)です。ネストされた join の下や DISTINCT の下にある述語、および 2 つのキーカラム同士の比較は対象外です。これらはもう一方の側で主キーの pruning に利用できず、コピーしても処理が増えるだけだからです。
query_plan_enable_optimizations が 1 の場合にのみ有効になります。
query_plan_push_down_limit
実行計画内で LIMIT をより下流へ移動するクエリプランレベルの最適化を切り替えます。 この設定は、query_plan_enable_optimizations が 1 の場合にのみ有効です。これは、開発者がデバッグ目的でのみ使用すべき上級者向けの設定です。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_push_down_volume_reducing_functions
データ量を削減する関数 (length、lengthUTF8、empty、notEmpty) を実行計画内の
Sorting および Filter ステップの下へ移動する、クエリプランレベルの最適化を切り替えます。固定サイズの結果で
wide String / FixedString の引数を置き換えるため、これらのステップで引数を保持する必要がなくなります。
この書き換えは、プッシュダウン先のステップより上で引数カラムが不要な場合にのみ適用されます。
設定 query_plan_enable_optimizations が 1 の場合にのみ有効です。
設定可能な値:
- 0 - 無効化
- 1 - 有効化
query_plan_push_limit_by_into_sort
ORDER BY ... LIMIT BY クエリに対する クエリプランレベルの最適化 を切り替えます。LIMIT BY のカラムが ORDER BY 句のプレフィックスである場合、各並列ソート済みストリームは、ストリームが 1 つにマージされる前に LIMIT BY を適用します。これにより、最終マージおよび後続のパイプライン段階で処理される行数が減少します。LIMIT BY によって大量の行が破棄されるクエリを高速化します。
この設定は、query_plan_enable_optimizations が 1 の場合にのみ有効です。
設定可能な値:
- 0 - 無効
- 1 - 有効
query_plan_read_in_order
read in-order 最適化のクエリプランレベルでの 最適化 を切り替えます。 設定query_plan_enable_optimizations が 1 の場合にのみ有効です。
これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用すべきです。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_read_in_order_through_join
JOIN演算において左テーブルから順序どおりに読み取りを継続し、その後のステップで利用できるようにします。query_plan_remove_redundant_distinct
冗長な DISTINCT ステップを削除するクエリプランレベルの最適化の有効/無効を切り替えます。 設定query_plan_enable_optimizations が 1 の場合にのみ有効です。
これは、開発者がデバッグ目的でのみ使用すべき上級者向けの設定です。この設定は、将来後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効化
- 1 - 有効化
query_plan_remove_redundant_sorting
冗長なソートステップを削除するクエリプランレベルの最適化を切り替えます。たとえば、サブクエリ内のソートが対象です。 設定query_plan_enable_optimizations が 1 の場合にのみ有効です。
これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用してください。今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_remove_unused_columns
この設定は、クエリプランステップから未使用のカラム (入力カラムと出力カラムの両方) を削除しようとするクエリプランレベルの最適化を有効または無効にします。 query_plan_enable_optimizations が 1 の場合にのみ有効です。これはエキスパートレベルの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は将来、後方互換性のない形で変更されるか、削除される可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_reuse_storage_ordering_for_window_functions
別名:optimize_read_in_window_order
ウィンドウ関数のソート時にストレージのソート順を利用する、クエリプランレベルの最適化をトグルします。
設定 query_plan_enable_optimizations が 1 の場合にのみ有効です。
これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_short_circuit_constant_false_join
ON 条件が定数 false に畳み込まれる JOIN を短絡評価します。行を生成できない各入力側 (INNER/CROSS/SEMI では両側、LEFT/RIGHT では保持されない側) を空のソースに置き換えることで、結果に寄与しない側を読み取りません。非分散プランに適用されます。
query_plan_split_filter
これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効
query_plan_text_index_add_hint
クエリプランで、転置テキスト索引から構築されるフィルタリングに対するヒント (追加の述語) を追加できるようにします。query_plan_top_k_through_join
ソートキーが join で保持される側 (LEFT/RIGHT) のカラムのみを参照している場合に、ORDER BY ... LIMIT n を join をまたいでプッシュダウンするクエリプランレベルの最適化を切り替えます。これにより、join 前に保持側の入力で生成される行数が制限されます。
設定 query_plan_enable_optimizations が 1 の場合にのみ有効です。
設定可能な値:
- 0 - 無効
- 1 - 有効
query_plan_try_use_vector_search
ベクトル類似度索引の使用を試みるクエリプランレベルの最適化を切り替えます。 この設定は、query_plan_enable_optimizations が 1 の場合にのみ有効です。
これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用することを想定しています。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
- 0 - 無効
- 1 - 有効