Skip to main content
Essas configurações estão disponíveis em system.settings e são autogeradas a partir do código-fonte.

optimize_trivial_approximate_count_query

Usa um valor aproximado na otimização de contagem trivial para mecanismos de armazenamento que oferecem suporte a esse tipo de estimativa, como o EmbeddedRocksDB. Valores possíveis:
  • 0 — Otimização desabilitada.
    • 1 — Otimização habilitada.

optimize_trivial_count_query

Ativa ou desativa a otimização da consulta trivial SELECT count() FROM table usando metadados do MergeTree. Se você precisar usar segurança em nível de linha, desative esta configuração. Valores possíveis:
  • 0 — Otimização desativada.
    • 1 — Otimização ativada.
Veja também:

optimize_trivial_count_with_sparsity_filter

Estende a otimização optimize_trivial_count_query para consultas na forma SELECT count() FROM t WHERE col <op> const, em que <op> const particiona exatamente as linhas em valores padrão e não padrão de col. A contagem é então obtida a partir dos contadores num_defaults / num_rows por coluna que o MergeTree já mantém em serialization.json, sem varredura de dados. Padrões reconhecidos:
  • col = default(col) / col != default(col) para Int* / UInt*, String / FixedString, Date / DateTime / DateTime64, Decimal*, UUID, IPv4 / IPv6.
  • IS NULL / IS NOT NULL em colunas Nullable.
  • empty(col) / notEmpty(col) em colunas String.
  • col = true / col != true em colunas Bool.
  • col > 0, col >= 1, col < 1, col <= 0 em colunas de inteiros sem sinal.
  • col isolada / NOT col em colunas Int*, UInt*, Bool (teste de veracidade).
Os padrões de igualdade não se aplicam a Float*, Enum*, Nullable, LowCardinality nem a tipos compostos (Tuple, Array, Map, …) — nesses casos, a contagem é obtida pelo caminho normal de varredura. Para entrar em vigor, o contador num_defaults por parte deve ser exato. Habilite a configuração de tabela MergeTree compute_exact_num_defaults_for_sparse_columns na tabela de destino antes de inserts e merges. Partes gravadas sem isso são silenciosamente excluídas da rewrite, portanto habilitar apenas optimize_trivial_count_with_sparsity_filter não é suficiente. Para os padrões IS NULL / IS NOT NULL em colunas Nullable, a coluna também deve ter uma entrada num_defaults em serialization.json, o que só acontece quando a configuração de tabela MergeTree nullable_serialization_version é definida como allow_sparse no momento do insert / merge. Com o valor padrão basic, colunas Nullable não recebem entrada por coluna, portanto a otimização silenciosamente não se aplica. Valores possíveis:
  • 0 — Otimização desabilitada.
    • 1 — Otimização habilitada.
Veja também:

optimize_trivial_group_by_limit_query

Habilita ou desabilita a otimização de uma consulta trivial SELECT key_expr FROM table GROUP BY key_expr LIMIT n (sem funções de agregação na projeção, sem cláusulas HAVING/ORDER BY/LIMIT BY/window e sem modificadores GROUP BY) definindo max_rows_to_group_by = n + offset com group_by_overflow_mode = 'any'. A agregação é interrompida assim que n + offset chaves distintas são geradas. A otimização é suprimida quando o usuário definiu explicitamente group_by_overflow_mode para um valor diferente de any (para preservar a semântica explícita de throw/break) e quando o usuário já definiu um max_rows_to_group_by mais restritivo (a otimização seria um no-op). Possíveis valores:
  • 0 — Otimização desabilitada.
  • 1 — Otimização habilitada.

optimize_trivial_insert_select

Otimizar a consulta trivial ‘INSERT INTO table SELECT … FROM TABLES’

optimize_trivial_view_pushdown_to_distributed

Quando habilitada, em views sobre tabelas Distributed cuja lista SELECT contenha apenas referências a colunas, * ou expressões (sem funções de janela nem subconsultas escalares) e que não tenham agregação, agrupamento, ordenação ou junções, toda a consulta externa é enviada a cada shard. Isso permite que o shard aplique localmente os filtros e as expressões da view, reduzindo a quantidade de dados transferidos pela rede. Valores possíveis:
  • 0 — A otimização está desabilitada; as views sobre tabelas Distributed são sempre executadas no coordenador.
  • 1 — A otimização está habilitada.
Última modificação em 14 de agosto de 2026