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

optimize_trivial_approximate_count_query

このような概算をサポートするストレージ (たとえば EmbeddedRocksDB) に対する単純な count 最適化では、概算値を使用します。 設定可能な値:
  • 0 — 最適化は無効です。
    • 1 — 最適化は有効です。

optimize_trivial_count_query

MergeTree のメタデータを使用して、単純なクエリ SELECT count() FROM table の最適化を有効または無効にします。行レベルのセキュリティを使用する必要がある場合は、この設定を無効にしてください。 設定可能な値:
  • 0 — 最適化は無効です。
    • 1 — 最適化は有効です。
関連項目:

optimize_trivial_count_with_sparsity_filter

optimize_trivial_count_query の最適化を、 SELECT count() FROM t WHERE col <op> const 形式の クエリにも拡張します。ここで、<op> constcol のデフォルト値と非デフォルト値に行を 正確に分ける必要があります。その場合、count は MergeTree がすでに serialization.json に保持しているカラム単位の num_defaults / num_rows カウンターから 返されるため、データスキャンは発生しません。 認識されるパターン:
  • Int* / UInt*String / FixedStringDate / DateTime / DateTime64Decimal*UUIDIPv4 / IPv6 に対する col = default(col) / col != default(col)
  • Nullable カラムに対する IS NULL / IS NOT NULL
  • String カラムに対する empty(col) / notEmpty(col)
  • Bool カラムに対する col = true / col != true
  • 符号なし整数カラムに対する col > 0col >= 1col < 1col <= 0
  • Int*UInt*Bool カラムに対する単独の col / NOT col (真偽判定) 。
等価比較のパターンは、Float*Enum*NullableLowCardinality、 および複合型 (TupleArrayMap、…) には適用されません。これらでは、count は 通常のスキャン経路で処理されます。 この最適化を有効にするには、パーツごとの num_defaults カウンターが正確である必要があります。insert と merge の前に、ターゲットテーブルで MergeTree の テーブル設定 compute_exact_num_defaults_for_sparse_columns を有効にしてください。 これを有効にせずに書き込まれたパーツは、暗黙的に rewrite の対象外となるため、 optimize_trivial_count_with_sparsity_filter を有効にするだけでは不十分です。 Nullable カラムに対する IS NULL / IS NOT NULL パターンでは、そのカラムに serialization.json 内の num_defaults エントリも必要です。これは、MergeTree の テーブル設定 nullable_serialization_version が insert / merge 時に allow_sparse に設定されている場合にのみ作成されます。デフォルト値 basic では、Nullable カラムにはカラムごとのエントリが作成されないため、 この最適化は暗黙的に適用されません。 設定可能な値:
  • 0 — 最適化は無効です。
    • 1 — 最適化は有効です。
関連項目:

optimize_trivial_group_by_limit_query

単純なクエリ SELECT key_expr FROM table GROUP BY key_expr LIMIT n に対する最適化を有効または無効にします (projection に aggregate functions がなく、HAVING/ORDER BY/LIMIT BY/window clauses がなく、GROUP BY modifiers もない場合) 。この最適化は、max_rows_to_group_by = n + offset および group_by_overflow_mode = 'any' を設定することで行われます。n + offset 個の異なるキーが生成された時点で、集約は停止します。 この最適化は、ユーザーが group_by_overflow_modeany 以外の値に明示的に設定している場合 (明示した throw/break の動作を維持するため) 、およびユーザーがすでにより厳しい max_rows_to_group_by を設定している場合 (この最適化が no-op になるため) には抑制されます。 設定可能な値:
  • 0 — 最適化は無効です。
  • 1 — 最適化は有効です。

optimize_trivial_insert_select

単純な ‘INSERT INTO table SELECT … FROM TABLES’ クエリを最適化
最終更新日 2026年7月24日