> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# query_plan_* セッション設定

> query_plan_* グループで生成される ClickHouse のセッション設定。

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>型</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>デフォルト値</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          再起動せずに変更可能
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            実験的な機能です。 <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">詳細を見る。</a></u>
        </div>;
};

これらの設定は [system.settings](/docs/ja/reference/system-tables/settings) で確認でき、[ソース](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp) から自動生成されています。

<div id="query_plan_aggregation_in_order">
  ## query\_plan\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.12"},{"label": "1"},{"label": "クエリプランに関する一部のリファクタリングを有効にする"}]}]} />

集約における in-order のクエリプランレベル最適化を切り替えます。
設定 [`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは開発者がデバッグ目的でのみ使用すべき、上級者向けの設定です。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_convert_any_join_to_semi_or_anti_join">
  ## query\_plan\_convert\_any\_join\_to\_semi\_or\_anti\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "新しい設定"}]}]} />

JOIN の後のフィルタが、不一致の行または一致した行に対して常に false と評価される場合に、ANY JOIN を SEMI JOIN または ANTI JOIN に変換できるようにします

<div id="query_plan_convert_join_to_in">
  ## query\_plan\_convert\_join\_to\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "新しい設定"}]}]} />

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

<div id="query_plan_convert_outer_join_to_inner_join">
  ## query\_plan\_convert\_outer\_join\_to\_inner\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "`JOIN` 後のフィルタで常にデフォルト値が除外される場合、`OUTER JOIN` を `INNER JOIN` に変換できるようにしました"}]}]} />

`JOIN` 後のフィルタで常にデフォルト値が除外される場合、`OUTER JOIN` を `INNER JOIN` に変換できるようにします

<div id="query_plan_direct_read_from_text_index">
  ## query\_plan\_direct\_read\_from\_text\_index
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "テキスト索引がGAになりました"}]}, {"id": "row-2","items": [{"label": "25.9"},{"label": "1"},{"label": "新しい設定"}]}]} />

クエリプランで、転置テキスト索引のみを使用した全文検索のフィルタリングを可能にします。

<div id="query_plan_display_internal_aliases">
  ## query\_plan\_display\_internal\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "新しい設定"}]}]} />

EXPLAIN PLAN で、元のクエリで指定された別名ではなく、内部別名 (\_\_table1 など) を表示します。

<div id="query_plan_enable_multithreading_after_window_functions">
  ## query\_plan\_enable\_multithreading\_after\_window\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

ウィンドウ関数の評価後にマルチスレッドを有効にし、並列ストリーム処理を可能にします

<div id="query_plan_enable_optimizations">
  ## query\_plan\_enable\_optimizations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

クエリプランレベルでのクエリ最適化の有効/無効を切り替えます。

<Note>
  これは上級者向けの設定であり、開発者がデバッグ目的にのみ使用してください。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - クエリプランレベルのすべての最適化を無効にする
* 1 - クエリプランレベルの最適化を有効にする (ただし、個々の最適化はそれぞれの設定によって無効にされる場合があります)

<div id="query_plan_execute_functions_after_sorting">
  ## query\_plan\_execute\_functions\_after\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

ソート処理の後に式を移動するクエリプランレベルの最適化を切り替えます。
この設定は、[`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは開発者がDebug目的でのみ使用すべきexpert-level settingです。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_filter_push_down">
  ## query\_plan\_filter\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

実行計画内でフィルターをより下位へ押し下げる、クエリプランレベルの最適化の有効/無効を切り替えます。
設定 [query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用すべきです。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_join_shard_by_pk_ranges">
  ## query\_plan\_join\_shard\_by\_pk\_ranges
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "新しい設定"}]}]} />

両方のテーブルで、結合キーに PRIMARY KEY のプレフィックスが含まれている場合は、JOIN に対して分片化を適用します。hash、parallel\_hash、full\_sorting\_merge アルゴリズムでサポートされています。通常、クエリの高速化にはつながりませんが、メモリ消費量を抑えられる場合があります。

<div id="query_plan_join_swap_table">
  ## query\_plan\_join\_swap\_table
</div>

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "auto"},{"label": "新しい設定。以前は常に右テーブルが選択されていました。"}]}]} />

クエリプランにおいて、結合のどちら側をビルドテーブル (inner とも呼ばれ、ハッシュ結合ではハッシュテーブルに挿入される側) にするかを決定します。この設定は、`JOIN ON` 句を使用する `ALL` join strictness でのみサポートされています。設定可能な値は次のとおりです。

* 'auto': どのテーブルをビルドテーブルとして使用するかをプランナーが決定します。
* 'false': テーブルを入れ替えません (右テーブルがビルドテーブルになります) 。
* 'true': 常にテーブルを入れ替えます (左テーブルがビルドテーブルになります) 。

<div id="query_plan_lift_up_array_join">
  ## query\_plan\_lift\_up\_array\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

実行計画内で ARRAY JOIN を上位に移動する、クエリプランレベルの最適化を切り替えます。
この設定は、[query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は、将来後方互換性のない形で変更されるか、削除される可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_lift_up_union">
  ## query\_plan\_lift\_up\_union
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

クエリプラン内のより大きな部分木をユニオンへ移動し、追加の最適化を可能にするクエリプランレベルの最適化をトグルします。
この設定は [`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは開発者がデバッグ用途でのみ使用すべき上級者向けの設定です。将来的に後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_max_limit_for_join_lazy_indexing">
  ## query\_plan\_max\_limit\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1000"},{"label": "クエリプランを使用した JOIN の遅延索引最適化を利用できる上限値を制御する新しい設定を追加しました。0 の場合、制限はありません"}]}]} />

JOIN の遅延索引最適化でクエリプランを使用できる上限値を制御します。0 の場合、制限はありません。

<div id="query_plan_max_limit_for_lazy_materialization">
  ## query\_plan\_max\_limit\_for\_lazy\_materialization
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "10"},{"label": "遅延マテリアライゼーションの最適化にクエリプランを使用できる最大制限値を制御する新しい設定を追加しました。0 の場合、制限はありません"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10000"},{"label": "パフォーマンス改善後に制限値を引き上げました"}]}, {"id": "row-3","items": [{"label": "25.11"},{"label": "100"},{"label": "さらに最適化"}]}]} />

遅延マテリアライゼーションの最適化にクエリプランを使用できる最大制限値を制御します。0 の場合、制限はありません。

<div id="query_plan_max_limit_for_top_k_optimization">
  ## query\_plan\_max\_limit\_for\_top\_k\_optimization
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "新しい設定"}]}]} />

minmax スキップ索引と動的しきい値フィルタリングを使用した TopK 最適化のクエリプラン評価を可能にする最大リミット値を制御します。0 の場合、制限はありません。

<div id="query_plan_max_optimizations_to_apply">
  ## query\_plan\_max\_optimizations\_to\_apply
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

クエリプランに適用する最適化の総数を制限します。設定 [query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) を参照してください。
複雑なクエリで最適化に時間がかかりすぎるのを防ぐのに役立ちます。
EXPLAIN PLAN クエリでは、この上限に達すると最適化の適用を停止し、その時点のプランをそのまま返します。
通常のクエリ実行では、実際の最適化回数がこの設定値を超えると、例外が発生します。

<Note>
  これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用すべきです。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

<div id="query_plan_max_set_size_for_projection_match">
  ## query\_plan\_max\_set\_size\_for\_projection\_match
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "10000"},{"label": "projection matcher（現時点では aggregate projection）で、内容ハッシュ化された IN 句の Set のコストに上限を設ける新しい設定を追加しました。上限を超える Set は不一致として扱われます。0 を指定すると内容ハッシュ比較は完全に無効化されます（互換性設定の値: IN-set を含む node では 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` 句が現れる場合に、プランニング時に発生するコストを抑えるためのものです。

<div id="query_plan_max_step_description_length">
  ## query\_plan\_max\_step\_description\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "500"},{"label": "新しい設定"}]}]} />

EXPLAIN PLAN におけるステップの説明の最大長。

<div id="query_plan_merge_expression_into_join">
  ## query\_plan\_merge\_expression\_into\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "新しい設定。JOIN 順序の最適化時に、Expression ステップを JOIN ステップにマージできるようにします。"}]}]} />

JOIN 順序の最適化時に、式を JOIN ステップにマージできるようにします。

<div id="query_plan_merge_expressions">
  ## query\_plan\_merge\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

連続するフィルタをマージするクエリプランレベルの最適化を切り替えます。
この設定は、[query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは、開発者がデバッグ目的でのみ使用すべき高度な設定です。この設定は、将来的に後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_merge_filter_into_join_condition">
  ## query\_plan\_merge\_filter\_into\_join\_condition
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "フィルターを結合条件にマージする新しい設定を追加"}]}]} />

フィルターを `JOIN` 条件にマージし、`CROSS JOIN` を `INNER` に変換できるようにします。

<div id="query_plan_merge_filters">
  ## query\_plan\_merge\_filters
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "クエリプラン内のフィルタをマージできるようにします"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "クエリプラン内のフィルタをマージできるようにします。これは、アナライザで filter-push-down を適切にサポートするために必要です。"}]}]} />

クエリプラン内のフィルタをマージできるようにします。

<div id="query_plan_min_columns_for_join_lazy_indexing">
  ## query\_plan\_min\_columns\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "3"},{"label": "JOIN で遅延索引最適化を有効にするために必要な、左側の payload カラムの最小数を制御します"}]}]} />

JOIN で遅延索引最適化を有効にするために必要な、左側の payload カラムの最小数を制御します。0 はこの最適化が無効であることを意味します。

<div id="query_plan_optimize_join_order_algorithm">
  ## query\_plan\_optimize\_join\_order\_algorithm
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="JoinOrderAlgorithm" default_value="greedy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "greedy"},{"label": "新しい実験的な設定"}]}]} />

クエリプランの最適化時に試行する 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 や非連結なコンポーネントがある場合) は、フォールバックとして次のアルゴリズムが使用されます。

<div id="query_plan_optimize_join_order_limit">
  ## query\_plan\_optimize\_join\_order\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "新しい設定"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10"},{"label": "デフォルトでより多くのテーブルに対する JOIN の並べ替えを許可"}]}]} />

同じサブクエリ内の JOIN 順序を最適化します。現在のところ、ごく限られたケースでのみサポートされています。
値は、最適化対象とするテーブルの最大数です。

<div id="query_plan_optimize_join_order_max_searched_plans">
  ## query\_plan\_optimize\_join\_order\_max\_searched\_plans
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "100000"},{"label": "JOIN 順序オプティマイザが次のアルゴリズムにフォールバックする前に列挙する部分プラン数を制限するための新しい設定。"}]}]} />

`query_plan_optimize_join_order_algorithm` で、JOIN 順序オプティマイザが打ち切って次のアルゴリズムにフォールバックするまでに列挙できる部分プランの最大数です。
これにより、クリークやスターのように探索空間が指数関数的に増大する密な JOIN グラフにおいて、optimization 時間を決定論的に制限できます (実時間には依存しません) 。
制限を無効にするには 0 に設定します。既定の `query_plan_optimize_join_order_limit` では探索が常にこの上限を十分下回るため、影響はありません。

<div id="query_plan_optimize_join_order_randomize">
  ## query\_plan\_optimize\_join\_order\_randomize
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "テスト用に JOIN 順序の統計をランダム化する新しい設定。"}]}]} />

0 以外の値を設定すると、JOIN 順序オプティマイザは実際の統計の代わりに、ランダムに生成されたカーディナリティと NDV を使用します。
1 に設定するとランダムシードが生成され、1 より大きい値に設定すると、その値がシードとして直接使用されます。
これは、異なる JOIN 順序によって発生するエラーを見つけるためのテストを目的としています。

<div id="query_plan_optimize_lazy_final">
  ## query\_plan\_optimize\_lazy\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "主キーのセットを構築し、それを索引解析に使用することで、ReplacingMergeTree に対する FINAL 付きの読み取りを最適化する新しい設定"}]}]} />

主キーのセットを構築し、それを索引解析に使用することで、ReplacingMergeTree に対する FINAL 付きの読み取りを最適化します。

<div id="query_plan_optimize_lazy_materialization">
  ## query\_plan\_optimize\_lazy\_materialization
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "遅延マテリアライゼーションの最適化でクエリプランを使用するための新しい設定を追加"}]}]} />

遅延マテリアライゼーションの最適化でクエリプランを使用します。

<div id="query_plan_optimize_prewhere">
  ## query\_plan\_optimize\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "サポートされているストレージで、フィルタをPREWHERE式にプッシュダウンできるようにします"}]}]} />

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

<div id="query_plan_push_down_limit">
  ## query\_plan\_push\_down\_limit
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

実行計画内で LIMIT をより下流へ移動するクエリプランレベルの最適化を切り替えます。
この設定は、[query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは、開発者がデバッグ目的でのみ使用すべき上級者向けの設定です。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_push_limit_by_into_sort">
  ## query\_plan\_push\_limit\_by\_into\_sort
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "LIMIT BY のカラムが ORDER BY のプレフィックスである場合に、ストリームごとの LIMIT BY をソートパイプラインに押し込み、最終マージを流れる行数を減らす新しい設定。"}]}]} />

`ORDER BY ... LIMIT BY` クエリに対する クエリプランレベルの最適化 を切り替えます。`LIMIT BY` のカラムが `ORDER BY` 句のプレフィックスである場合、各並列ソート済みストリームは、ストリームが 1 つにマージされる前に `LIMIT BY` を適用します。これにより、最終マージおよび後続のパイプライン段階で処理される行数が減少します。`LIMIT BY` によって大量の行が破棄されるクエリを高速化します。

この設定は、[query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_read_in_order">
  ## query\_plan\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

read in-order 最適化のクエリプランレベルでの 最適化 を切り替えます。
設定 [`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用すべきです。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_read_in_order_through_join">
  ## query\_plan\_read\_in\_order\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "新しい設定"}]}]} />

JOIN演算において左テーブルから順序どおりに読み取りを継続し、その後のステップで利用できるようにします。

<div id="query_plan_remove_redundant_distinct">
  ## query\_plan\_remove\_redundant\_distinct
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "クエリプランから冗長な Distinct ステップを削除"}]}]} />

冗長な DISTINCT ステップを削除するクエリプランレベルの最適化の有効/無効を切り替えます。
設定 [`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは、開発者がデバッグ目的でのみ使用すべき上級者向けの設定です。この設定は、将来後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効化
* 1 - 有効化

<div id="query_plan_remove_redundant_sorting">
  ## query\_plan\_remove\_redundant\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.1"},{"label": "1"},{"label": "クエリプラン内の冗長なソートを削除します。たとえば、サブクエリ内の ORDER BY 句に関連するソートステップなどです"}]}]} />

冗長なソートステップを削除するクエリプランレベルの最適化を切り替えます。たとえば、サブクエリ内のソートが対象です。
設定 [`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用してください。今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_remove_unused_columns">
  ## query\_plan\_remove\_unused\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "新しい設定。クエリプラン内の未使用カラムを削除する最適化を追加。"}]}]} />

この設定は、クエリプランステップから未使用のカラム (入力カラムと出力カラムの両方) を削除しようとするクエリプランレベルの最適化を有効または無効にします。
[query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これはエキスパートレベルの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は将来、後方互換性のない形で変更されるか、削除される可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_reuse_storage_ordering_for_window_functions">
  ## query\_plan\_reuse\_storage\_ordering\_for\_window\_functions
</div>

**別名**: `optimize_read_in_window_order`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "このロジックはデフォルトで無効です。"}]}]} />

ウィンドウ関数のソート時にストレージのソート順を利用する、クエリプランレベルの最適化をトグルします。
設定 [`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これは上級者向けの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は将来、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_split_filter">
  ## query\_plan\_split\_filter
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<Note>
  これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用してください。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

フィルターを式に分割する、クエリプランレベルの最適化を切り替えます。
設定 [query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_text_index_add_hint">
  ## query\_plan\_text\_index\_add\_hint
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "新しい設定"}]}]} />

クエリプランで、転置テキスト索引から構築されるフィルタリングに対するヒント (追加の述語) を追加できるようにします。

<div id="query_plan_top_k_through_join">
  ## query\_plan\_top\_k\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "ソートキーが保持される側のみを参照している場合に、`ORDER BY ... LIMIT n` を LEFT\/RIGHT join をまたいでプッシュダウンするクエリプランレベルの最適化を有効にする新しい設定。"}]}]} />

ソートキーが join で保持される側 (LEFT/RIGHT) のカラムのみを参照している場合に、`ORDER BY ... LIMIT n` を join をまたいでプッシュダウンするクエリプランレベルの最適化を切り替えます。これにより、join 前に保持側の入力で生成される行数が制限されます。
設定 [query\_plan\_enable\_optimizations](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

設定可能な値:

* 0 - 無効
* 1 - 有効

<div id="query_plan_try_use_vector_search">
  ## query\_plan\_try\_use\_vector\_search
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "新しい設定"}]}]} />

ベクトル類似度索引の使用を試みるクエリプランレベルの最適化を切り替えます。
この設定は、[`query_plan_enable_optimizations`](/docs/ja/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) が 1 の場合にのみ有効です。

<Note>
  これはエキスパート向けの設定であり、開発者がデバッグ目的でのみ使用することを想定しています。この設定は今後、後方互換性のない形で変更されたり、削除されたりする可能性があります。
</Note>

設定可能な値:

* 0 - 無効
* 1 - 有効
