prefer_column_name_to_alias
クエリの式や句で、別名ではなく元のカラム名を使用するかどうかを切り替えます。特に、別名がカラム名と同じ場合に重要です。詳しくは Expression Aliases を参照してください。この設定を有効にすると、ClickHouse における別名の構文規則が、他の多くのデータベースエンジンとの互換性をより高めます。 設定可能な値:- 0 — カラム名は別名に置き換えられます。
- 1 — カラム名は別名に置き換えられません。
id AS x の id は t1 と t3 の両方のカラムであるため、別名 t1.id + 10 に解決されます。
例
有効時と無効時の違い:
クエリ:
prefer_external_sort_block_bytes
外部ソートで最大ブロックバイト数を優先し、マージ時のメモリ使用量を削減します。prefer_global_in_and_join
IN/JOIN 演算子を GLOBAL IN/GLOBAL JOIN に置き換える機能を有効にします。
設定可能な値:
- 0 — 無効。
IN/JOIN演算子はGLOBAL IN/GLOBAL JOINに置き換えられません。 - 1 — 有効。
IN/JOIN演算子はGLOBAL IN/GLOBAL JOINに置き換えられます。
SET distributed_product_mode=global は分散テーブルに対するクエリの動作を変更できますが、ローカルテーブルや外部リソース上のテーブルには適していません。そこで prefer_global_in_and_join 設定が役立ちます。
たとえば、分散には適さないローカルテーブルを持つクエリ処理ノードがあるとします。この場合、それらのデータを分散処理時に GLOBAL キーワード (GLOBAL IN/GLOBAL JOIN) を使って動的に各ノードへ配布する必要があります。
prefer_global_in_and_join のもう 1 つのユースケースは、外部エンジンで作成されたテーブルへのアクセスです。この設定を使うと、そのようなテーブルを join する際の外部ソースへの呼び出し回数を削減できます。クエリごとに 1 回だけです。
関連項目:
GLOBAL IN/GLOBAL JOINの使用方法の詳細は、分散サブクエリ を参照してください
prefer_localhost_replica
分散クエリの処理時に、localhost のレプリカを優先して使用するかどうかを有効または無効にします。 設定可能な値:- 1 — localhost のレプリカが存在する場合、ClickHouse は常にその localhost のレプリカにクエリを送信します。
- 0 — ClickHouse は、load_balancing 設定で指定された負荷分散戦略を使用します。
max_parallel_replicas を parallel_replicas_custom_key なしで使用する場合は、この設定を無効にしてください。
parallel_replicas_custom_key が設定されている場合、この設定を無効にするのは、複数の分片にそれぞれ複数のレプリカがあるクラスターで使用する場合に限ってください。
単一の分片と複数のレプリカを持つクラスターで使用する場合、この設定を無効にすると悪影響があります。
prefer_optimize_projection
projection 最適化が有効な場合 (optimize_use_projections 設定を参照) 、SELECT クエリにおいて projection 最適化がテーブルよりも projections を優先するようにします。
有効にすると、クエリを処理できる projection は、テーブル自体よりも多くの marks を読み取る必要がある場合でも使用されます。これは force_optimize_projection と同じ動作ですが、使用可能な projection がない場合でもクエリは失敗しません。
設定可能な値:
- 0 — projection は推定コストに基づいて選択されます。
- 1 — 推定コストに関わらず、利用可能な projection が選択されます。