optimize_aggregators_of_group_by_keys
Elimina agregadores min/max/any/anyLast de chaves de GROUP BY na seção SELECToptimize_append_index
Use restrições para adicionar a condição do índice. O padrão éfalse.
Valores possíveis:
- true, false
optimize_arithmetic_operations_in_aggregate_functions
Mover operações aritméticas para fora das funções de agregaçãooptimize_const_name_size
Substitui por um escalar e usa um hash como nome para constantes grandes (o tamanho é estimado pelo comprimento do nome). Valores possíveis:- inteiro positivo - comprimento máximo do nome,
- 0 — sempre,
- inteiro negativo - nunca.
optimize_count_from_files
Ativa ou desativa a otimização da contagem do número de linhas em arquivos em diferentes formatos de entrada. Aplica-se às funções de tabela/motoresfile/s3/url/hdfs/azureBlobStorage.
Valores possíveis:
- 0 — Otimização desativada.
- 1 — Otimização ativada.
optimize_dictget_tuple_element
ReescrevetupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) em dictGet('dict', 'b', key) para evitar buscar atributos desnecessários do dicionário. Oferece suporte a acesso posicional (.1, .2, …) e nomeado (.b) e também se aplica a dictGetOrDefault quando o argumento padrão é uma tupla constante ou um tuple(...) de constantes.
optimize_distinct_in_order
Habilita a otimização de DISTINCT se algumas colunas do DISTINCT formarem um prefixo da ordenação. Por exemplo, um prefixo da chave de ordenação no MergeTree ou da instrução ORDER BYoptimize_distributed_group_by_sharding_key
Otimiza consultasGROUP BY sharding_key, evitando agregações custosas no servidor iniciador (o que reduz o uso de memória da consulta nesse servidor).
Os seguintes tipos de consultas são suportados (assim como todas as combinações entre eles):
SELECT DISTINCT [..., ]sharding_key[, ...] FROM distSELECT ... FROM dist GROUP BY sharding_key[, ...]SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY xSELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
SELECT ... GROUP BY sharding_key[, ...] WITH TOTALSSELECT ... GROUP BY sharding_key[, ...] WITH ROLLUPSELECT ... GROUP BY sharding_key[, ...] WITH CUBESELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
- 0 — Desabilitado.
- 1 — Habilitado.
No momento, isso requer
optimize_skip_unused_shards, porque no futuro essa opção poderá ser habilitada por padrão e só funcionará corretamente se os dados tiverem sido inseridos por uma tabela Distributed, ou seja, se os dados forem distribuídos de acordo com sharding_key.optimize_dry_run_check_part
Quando ativado,OPTIMIZE ... DRY RUN valida a parte resultante da mesclagem usando checkDataPart. Se a verificação falhar, uma exceção é lançada.
optimize_empty_string_comparisons
Converte expressões como col = ” ou ” = col para empty(col), e col != ” ou ” != col para notEmpty(col), apenas quando col é do tipo String ou FixedString.optimize_extract_common_expressions
Permite extrair expressões comuns de disjunções em expressões WHERE, PREWHERE, ON, HAVING e QUALIFY. Uma expressão lógica como(A AND B) OR (A AND C) pode ser reescrita como A AND (B OR C), o que pode ajudar a aproveitar:
- índices em expressões de filtro simples
- otimização de CROSS para INNER JOIN
optimize_functions_to_subcolumns
Habilita ou desabilita a otimização ao transformar algumas funções em leituras de subcolunas. Isso reduz a quantidade de dados lidos. Estas funções podem ser transformadas:- length para ler a subcoluna size0.
- empty para ler a subcoluna size0.
- notEmpty para ler a subcoluna size0.
- isNull para ler a subcoluna null.
- isNotNull para ler a subcoluna null.
- count para ler a subcoluna null.
- mapKeys para ler a subcoluna keys.
- mapValues para ler a subcoluna values.
- has e notHas para
Mappara ler a subcoluna keys. - mapContainsKeyLike para ler a subcoluna keys.
- mapContainsValueLike para ler a subcoluna values.
- 0 — Otimização desabilitada.
- 1 — Otimização habilitada.
optimize_inverse_dictionary_lookup
Evite buscas inversas repetidas no dicionário usando buscas mais rápidas em um conjunto pré-computado de possíveis valores de chave.optimize_multiif_to_if
Substitui ‘multiIf’ por ‘if’ quando há apenas uma condição.optimize_mutations_with_partition_pruning
Quando habilitada, o ClickHouse detecta automaticamente condições da chave de partição na cláusula WHERE de mutaçõesALTER TABLE UPDATE/DELETE e instruções UPDATE/DELETE leves em tabelas da família ReplicatedMergeTree, processando apenas as partições afetadas em vez de todas.
Essa eliminação automática atualmente se aplica apenas a tabelas replicadas. Em tabelas MergeTree não replicadas, use uma cláusula explícita IN PARTITION para limitar uma mutação a partições específicas.
Valores possíveis:
- 0 — Desabilitado. As mutações e atualizações leves processarão todas as partições.
- 1 — Habilitado. As mutações e atualizações leves processarão apenas as partições que correspondem à condição WHERE.
optimize_normalize_count_variants
Reescrever funções de agregação semanticamente equivalentes a count() como count().optimize_on_insert
Ativa ou desativa a transformação de dados antes da inserção, como se um merge tivesse sido feito neste bloco (de acordo com o mecanismo de tabela). Valores possíveis:- 0 — Desativado.
- 1 — Ativado.
optimize_prewhere_after_pushdown
Execute uma segunda passagem de promoção dePREWHERE após otimizações posteriores do plano de consulta possivelmente terem
adicionado filtros adicionais acima de uma etapa de leitura MergeTree (por exemplo, pushdown de predicados por meio de
JOIN, reescritas de projeção). Quando já existe um PREWHERE, o novo
filtro é mesclado a ele com AND, em vez de permanecer como uma etapa de filtro separada.
optimize_qbit_distance_function_reads
Substitui as funções de distância no tipo de dadoQBit por equivalentes que leem do armazenamento apenas as colunas necessárias para o cálculo.
optimize_read_in_order
Habilita a otimização de ORDER BY em consultas SELECT ao ler dados de tabelas MergeTree. Valores possíveis:- 0 — a otimização de
ORDER BYestá desabilitada. - 1 — a otimização de
ORDER BYestá habilitada.
optimize_read_in_reverse_order_final
Habilita a leitura de dados na ordem inversa da chave de ordenação em queriesSELECT com o modificador FINAL em tabelas ReplacingMergeTree. Só tem efeito quando optimize_read_in_order também está habilitado.
Valores possíveis:
- 0 — Leitura na ordem inversa com
FINALdesabilitada. - 1 — Leitura na ordem inversa com
FINALhabilitada.
optimize_respect_aliases
Se estiver definido como true, respeitará aliases em WHERE/GROUP BY/ORDER BY, o que ajudará na eliminação de partições/no uso de índices secundários/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_countoptimize_sorting_by_input_stream_properties
Otimiza a ordenação com base nas propriedades de ordenação do fluxo de entradaoptimize_substitute_columns
Use restrições para substituição de colunas. O padrão éfalse.
Valores possíveis:
- true, false
optimize_syntax_fuse_functions
Permite combinar funções de agregação com o mesmo argumento. Reescreve consultas que contêm pelo menos duas funções de agregação sum, count ou avg com o mesmo argumento para sumCount. Valores possíveis:- 0 — Funções com o mesmo argumento não são combinadas.
- 1 — Funções com o mesmo argumento são combinadas.
optimize_throw_if_noop
Habilita ou desabilita o lançamento de uma exceção se uma consulta OPTIMIZE não realizar um merge. Por padrão,OPTIMIZE retorna com sucesso mesmo quando não faz nada. Essa configuração permite diferenciar essas situações e obter o motivo na mensagem de exceção.
Valores possíveis:
- 1 — O lançamento de exceção está habilitado.
- 0 — O lançamento de exceção está desabilitado.
optimize_time_filter_with_preimage
Otimiza predicados Date e DateTime convertendo funções em comparações equivalentes, sem necessidade de conversão (ex.:toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_truncate_order_by_after_group_by_keys
Remove os elementos finais de ORDER BY quando todas as chaves de GROUP BY já estiverem cobertas pelo prefixo de ORDER BY.optimize_uniq_to_count
Reescreveuniq e suas variantes (exceto uniqUpTo) como count se a subconsulta tiver distinct ou uma cláusula group by.
optimize_using_constraints
Use restrições para otimizar consultas. O padrão éfalse.
Valores possíveis:
- true, false