Skip to main content
これらの設定は system.settings で確認でき、ソース から自動生成されています。

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

出力カラムが左テーブルにのみ関連している場合に、JOININ を使ったサブクエリに変換できるようにします。非 ANY JOIN (たとえばデフォルトの ALL JOIN) では、誤った結果になる可能性があります。

query_plan_convert_outer_join_to_inner_join

JOIN 後のフィルタで常にデフォルト値が除外される場合、OUTER JOININNER 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_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_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 の場合、制限はありません。

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 JOININNER に変換できるようにします。

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_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_object_storage

オブジェクトストレージから Parquet ファイル (Iceberg テーブルを含む) を読み取る際に、遅延マテリアライゼーションの最適化を使用します。ORDER BY ... LIMIT n クエリでは、ソートやフィルタリングに不要なカラムは、LIMIT の結果として残った n 行についてのみ読み取られます。query_plan_optimize_lazy_materialization が有効な場合にのみ有効です。

query_plan_optimize_prewhere

サポートされているストレージで、フィルタをPREWHERE式にプッシュダウンできるようにします

query_plan_push_down_limit

実行計画内で LIMIT をより下流へ移動するクエリプランレベルの最適化を切り替えます。 この設定は、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_read_in_order_through_spilling_join

query_plan_read_in_order_through_join を、max_bytes_before_external_join または max_bytes_ratio_before_external_join で自動ディスクスピルしきい値が設定されたハッシュ結合にも適用できるようにします。 このような結合が左テーブルの順序を保持すると保証できるのは、一度もスピルしない場合に限られます。スピルすると、行がハッシュによってバケットに分散されるためです。この最適化が適用される場合、結合はメモリ内に保持され、スピルしきい値はトリガーされなくなります。代わりに、自動スピルが設定されていない場合と同様に、右側のテーブルはメモリトラッカーによって制限されます。 0 に設定すると、スピルする可能性がある結合を介して順序どおりの読み取りを伝播しないという保守的な動作を維持します。メモリ制限内に収めるためにスピルに依存しており、そうでなければこの最適化の対象となるクエリは、従来どおり動作します。 結合の保持側に SortLimit をプッシュダウンする、JOIN を介した個別の ORDER BY ... LIMIT 最適化は、結合が順序を保持することに依存しないため、この設定にかかわらずスピル可能な結合でも引き続き利用できます。ただし、順序どおりの読み取りが可能な場合は、順序どおりの読み取りが優先されます。そのため、この設定を有効にすると、保持側が要求された順序で行をストリーミングできるスピル可能な結合に対する ORDER BY ... LIMIT では、プッシュダウンされた SortLimit ではなく、順序どおりの読み取りプランが使用されます。この切り替えには従来からの条件が適用され、特に query_plan_join_swap_table が明示的に false に設定されている必要があります。デフォルトの auto では、後続の最適化によって結合の左右が入れ替わり、順序どおりの読み取りプランが無効になる可能性があるため、この切り替えは確定せず、そのようなクエリではプッシュダウンされた SortLimit が引き続き使用されます。

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 では保持されない側) を空のソースに置き換えることで、結果に寄与しない側を読み取りません。アナライザ (enable_analyzer = 1) および非分散プランに適用されます。

query_plan_split_filter

これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
フィルターを式に分割する、クエリプランレベルの最適化を切り替えます。 設定 query_plan_enable_optimizations が 1 の場合にのみ有効です。 設定可能な値:
  • 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_enable_optimizations が 1 の場合にのみ有効です。
これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用することを想定しています。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
設定可能な値:
  • 0 - 無効
  • 1 - 有効
最終更新日 2026年8月18日