Estos ajustes están disponibles en system.settings y se generan automáticamente a partir del código fuente.
optimize_aggregators_of_group_by_keys
Elimina los agregadores min/max/any/anyLast de las claves de GROUP BY en la cláusula SELECT
optimize_append_index
Use restricciones para añadir la condición del índice. El valor predeterminado es false.
Valores posibles:
- true, false
optimize_arithmetic_operations_in_aggregate_functions
Saca las operaciones aritméticas de las funciones de agregación
optimize_const_name_size
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 25.11 | 256 | Sustituir por un escalar y usar un hash como nombre para constantes grandes (el tamaño se estima por la longitud del nombre) |
Sustituir por un escalar y usar un hash como nombre para constantes grandes (el tamaño se estima por la longitud del nombre).
Posibles valores:
- entero positivo - longitud máxima del nombre,
- 0 — siempre,
- entero negativo - nunca.
optimize_count_from_files
Habilita o deshabilita la optimización del conteo de filas en archivos con distintos formatos de entrada. Se aplica a las funciones de tabla/motores file/s3/url/hdfs/azureBlobStorage.
Valores posibles:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_dictget_tuple_element
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 26.5 | 1 | Reescribe tupleElement(dictGet(..., tuple_of_attrs, ...), N) como una llamada a dictGet de un solo atributo. |
Reescribe tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) como dictGet('dict', 'b', key) para evitar recuperar atributos del diccionario innecesarios. Admite acceso posicional (.1, .2, …) y con nombre (.b), y también se aplica a dictGetOrDefault cuando el argumento por defecto es una tupla constante o un tuple(...) de constantes.
optimize_distinct_in_order
Habilita la optimización de DISTINCT si algunas de sus columnas forman un prefijo de la ordenación. Por ejemplo, un prefijo de la clave de ordenación en MergeTree o de la instrucción ORDER BY
optimize_distributed_group_by_sharding_key
Optimiza las consultas GROUP BY sharding_key al evitar una agregación costosa en el servidor iniciador (lo que reduce el uso de memoria de la consulta en ese servidor).
Se admiten los siguientes tipos de consultas (y cualquier combinación de ellos):
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
No se admiten los siguientes tipos de consultas (más adelante podría añadirse soporte para algunas de ellas):
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
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
Véase también:
optimize_dry_run_check_part
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 26.2 | 1 | Nueva opción |
Si está habilitado, OPTIMIZE ... DRY RUN valida la parte fusionada resultante con checkDataPart. Si la comprobación falla, se lanza una excepción.
optimize_empty_string_comparisons
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 25.10 | 1 | Nueva configuración. |
Convierte expresiones como col = '' o '' = col en empty(col), y col != '' o '' != col en notEmpty(col), únicamente cuando col es de tipo String o FixedString.
optimize_extract_common_expressions
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 25.1 | 1 | Optimiza las expresiones WHERE, PREWHERE, ON, HAVING y QUALIFY extrayendo las expresiones comunes de una disyunción de conjunciones. |
| 24.12 | 0 | Introduce una configuración para optimizar las expresiones WHERE, PREWHERE, ON, HAVING y QUALIFY extrayendo las expresiones comunes de una disyunción de conjunciones. |
Permite extraer expresiones comunes de las disyunciones en las expresiones WHERE, PREWHERE, ON, HAVING y QUALIFY. Una expresión lógica como (A AND B) OR (A AND C) puede reescribirse como A AND (B OR C), lo que puede ayudar a aprovechar:
- índices en expresiones de filtrado simples
- la optimización de CROSS a INNER JOIN
optimize_functions_to_subcolumns
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 24.8 | 1 | Configuración habilitada de forma predeterminada |
Habilita o deshabilita la optimización mediante la transformación de algunas funciones para que lean subcolumnas. Esto reduce la cantidad de datos que se deben leer.
Estas funciones pueden transformarse:
- length para leer la subcolumna size0.
- empty para leer la subcolumna size0.
- notEmpty para leer la subcolumna size0.
- isNull para leer la subcolumna null.
- isNotNull para leer la subcolumna null.
- count para leer la subcolumna null.
- mapKeys para leer la subcolumna keys.
- mapValues para leer la subcolumna values.
Valores posibles:
- 0 — Optimización deshabilitada.
- 1 — Optimización habilitada.
optimize_inverse_dictionary_lookup
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 25.12 | 1 | Nueva opción |
Evita repetir la búsqueda inversa en diccionarios mediante búsquedas más rápidas en un conjunto precalculado de posibles valores de clave.
optimize_multiif_to_if
Sustituye 'multiIf' por 'if' cuando solo haya una condición.
optimize_normalize_count_variants
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 21.3 | 1 | Reescribe de forma predeterminada las funciones de agregación semánticamente equivalentes a count() como count() |
Reescribe las funciones de agregación semánticamente equivalentes a count() como count().
optimize_on_insert
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 21.1 | 1 | Habilita la optimización de datos en INSERT de forma predeterminada para mejorar la experiencia del usuario |
Habilita o deshabilita la transformación de datos antes de la inserción, como si se hubiera realizado una fusión en este bloque (según el motor de la tabla).
Posibles valores:
- 0 — Deshabilitado.
- 1 — Habilitado.
Ejemplo
La diferencia entre habilitado y deshabilitado:
Consulta:
SET optimize_on_insert = 1;
CREATE TABLE test1 (`FirstTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY FirstTable;
INSERT INTO test1 SELECT number % 2 FROM numbers(5);
SELECT * FROM test1;
SET optimize_on_insert = 0;
CREATE TABLE test2 (`SecondTable` UInt32) ENGINE = ReplacingMergeTree ORDER BY SecondTable;
INSERT INTO test2 SELECT number % 2 FROM numbers(5);
SELECT * FROM test2;Resultado:
┌─FirstTable─┐
│ 0 │
│ 1 │
└────────────┘
┌─SecondTable─┐
│ 0 │
│ 0 │
│ 0 │
│ 1 │
│ 1 │
└─────────────┘Tenga en cuenta que esta configuración afecta al comportamiento de la vista materializada.
optimize_prewhere_after_pushdown
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 26.6 | 0 | Nueva configuración que habilita una segunda pasada de promoción de PREWHERE para fusionar en la cadena PREWHERE existente los filtros añadidos sobre un paso de lectura de MergeTree por optimizaciones posteriores (pushdown de predicados a través de JOIN, reescrituras de proyección). |
Ejecuta una segunda pasada de promoción de PREWHERE después de que optimizaciones posteriores del plan de consulta hayan podido
añadir filtros adicionales sobre un paso de lectura de MergeTree (p. ej., pushdown de predicados a través de
JOIN, reescrituras de proyección). Cuando ya existe un PREWHERE, el nuevo
filtro se fusiona con él mediante AND en lugar de permanecer como un paso de filtro independiente.
optimize_qbit_distance_function_reads
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 25.10 | 1 | Nueva configuración |
Sustituye las funciones de distancia del tipo de dato QBit por otras equivalentes que solo leen del almacenamiento las columnas necesarias para el cálculo.
optimize_read_in_order
Habilita la optimización de ORDER BY en las consultas SELECT para la lectura de datos de tablas MergeTree.
Valores posibles:
- 0 — la optimización de
ORDER BYestá deshabilitada. - 1 — la optimización de
ORDER BYestá habilitada.
Véase también
optimize_respect_aliases
Si se establece en true, respetará los alias en WHERE/GROUP BY/ORDER BY, lo que ayudará con el descarte de particiones/índices secundarios/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count
optimize_sorting_by_input_stream_properties
Optimiza la ordenación en función de las propiedades de ordenación del flujo de entrada
optimize_substitute_columns
Use restricciones para sustituir columnas. El valor predeterminado es false.
Valores posibles:
- true, false
optimize_syntax_fuse_functions
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 26.3 | 1 | La optimización está lista para producción |
Permite fusionar funciones de agregación con el mismo argumento. Reescribe una consulta que contiene al menos dos funciones de agregación de sum, count o avg con el mismo argumento como sumCount.
Valores posibles:
- 0 — Las funciones con el mismo argumento no se fusionan.
- 1 — Las funciones con el mismo argumento se fusionan.
Ejemplo
Consulta:
CREATE TABLE fuse_tbl(a Int8, b Int8) Engine = Log;
SET optimize_syntax_fuse_functions = 1;
EXPLAIN SYNTAX run_query_tree_passes = 1 SELECT sum(a), sum(b), count(b), avg(b) from fuse_tbl FORMAT TSVRaw;Resultado:
SELECT
sum(__table1.a) AS `sum(a)`,
tupleElement(sumCount(__table1.b), 1) AS `sum(b)`,
tupleElement(sumCount(__table1.b), 2) AS `count(b)`,
divide(tupleElement(sumCount(__table1.b), 1), toFloat64(tupleElement(sumCount(__table1.b), 2))) AS `avg(b)`
FROM default.fuse_tbl AS __table1optimize_throw_if_noop
Habilita o deshabilita el lanzamiento de una excepción si una consulta OPTIMIZE no realizó ninguna fusión.
De forma predeterminada, OPTIMIZE se completa correctamente incluso si no hizo nada. Esta configuración le permite distinguir estas situaciones y obtener el motivo en el mensaje de excepción.
Valores posibles:
- 1 — El lanzamiento de una excepción está habilitado.
- 0 — El lanzamiento de una excepción está deshabilitado.
optimize_time_filter_with_preimage
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 24.2 | 1 | Optimiza los predicados de Date y DateTime convirtiendo las funciones en comparaciones equivalentes sin necesidad de conversiones (p. ej., toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31') |
Optimiza los predicados de Date y DateTime convirtiendo las funciones en comparaciones equivalentes sin necesidad de conversiones (p. ej., toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_truncate_order_by_after_group_by_keys
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 26.4 | 1 | Eliminar los elementos finales de ORDER BY una vez que todas las claves de GROUP BY queden incluidas en el prefijo de ORDER BY. |
Eliminar los elementos finales de ORDER BY una vez que todas las claves de GROUP BY queden incluidas en el prefijo de ORDER BY.
optimize_uniq_to_count
Reescribe uniq y sus variantes (excepto uniqUpTo) como count si la subconsulta tiene DISTINCT o una cláusula GROUP BY.
optimize_using_constraints
Use restricciones para la optimización de consultas. El valor predeterminado es false.
Valores posibles:
- true, false