Skip to main content
Estos SETTINGS están disponibles en system.settings y se generan automáticamente a partir del código fuente.

optimize_trivial_approximate_count_query

Usa un valor aproximado para la optimización de recuento trivial en motores de almacenamiento que admitan este tipo de estimación, por ejemplo, EmbeddedRocksDB. Valores posibles:
  • 0 — Optimización deshabilitada.
    • 1 — Optimización habilitada.

optimize_trivial_count_query

Activa o desactiva la optimización de la consulta trivial SELECT count() FROM table mediante los metadatos de MergeTree. Si necesita usar seguridad a nivel de fila, desactive este SETTING. Valores posibles:
  • 0 — Optimización desactivada.
    • 1 — Optimización activada.
Véase también:

optimize_trivial_count_with_sparsity_filter

Extiende la optimización optimize_trivial_count_query a consultas de la forma SELECT count() FROM t WHERE col <op> const, donde <op> const divide exactamente las filas entre valores predeterminados y no predeterminados de col. El conteo se resuelve entonces a partir de los contadores num_defaults / num_rows por columna que MergeTree ya mantiene en serialization.json, sin escanear datos. Patrones reconocidos:
  • col = default(col) / col != default(col) para Int* / UInt*, String / FixedString, Date / DateTime / DateTime64, Decimal*, UUID, IPv4 / IPv6.
  • IS NULL / IS NOT NULL en columnas Nullable.
  • empty(col) / notEmpty(col) en columnas String.
  • col = true / col != true en columnas Bool.
  • col > 0, col >= 1, col < 1, col <= 0 en columnas enteras sin signo.
  • col / NOT col directos en columnas Int*, UInt*, Bool (prueba de veracidad).
Los patrones de igualdad no se aplican a Float*, Enum*, Nullable, LowCardinality ni a tipos compuestos (Tuple, Array, Map, …) — para estos, el conteo se resuelve mediante la ruta de escaneo normal. Para que surta efecto, el contador num_defaults por parte debe ser exacto. Habilite la SETTING de tabla de MergeTree compute_exact_num_defaults_for_sparse_columns en la tabla de destino antes de las inserciones y fusiones. Las partes escritas sin ella quedan excluidas silenciosamente de la reescritura, por lo que habilitar solo optimize_trivial_count_with_sparsity_filter no es suficiente. Para los patrones IS NULL / IS NOT NULL en columnas Nullable, la columna también debe tener una entrada num_defaults en serialization.json, lo que solo ocurre cuando la SETTING de tabla de MergeTree nullable_serialization_version está establecida en allow_sparse en el momento de la inserción / fusión. Con el valor predeterminado basic, las columnas Nullable no obtienen ninguna entrada por columna, por lo que la optimización simplemente no se aplica. Posibles valores:
  • 0 — Optimización deshabilitada.
    • 1 — Optimización habilitada.
Véase también:

optimize_trivial_group_by_limit_query

Habilita o deshabilita la optimización de una consulta trivial SELECT ... FROM table GROUP BY key_expr LIMIT n (sin cláusulas HAVING/ORDER BY/QUALIFY/LIMIT BY/DISTINCT/de ventana y sin modificadores de GROUP BY), que consiste en limitar la agregación a n + offset claves distintas. Si la proyección no contiene funciones de agregación, el límite se aplica estableciendo max_rows_to_group_by = n + offset con group_by_overflow_mode = 'any' (esta variante también se aplica en los segmentos de las consultas distribuidas). Si la proyección contiene funciones de agregación, el límite solo se aplica cuando el servidor realiza toda la agregación localmente: en cuanto cualquier thread de agregación supera el límite, todos los threads pasan a compartir un único conjunto de n + offset claves conservadas, de modo que los valores agregados de las claves devueltas siguen siendo exactos. La optimización no se aplica cuando el usuario ha establecido explícitamente group_by_overflow_mode en un valor distinto de any (para respetar el comportamiento throw/break que ha elegido de forma explícita), cuando el usuario ya ha establecido un max_rows_to_group_by más restrictivo, ni cuando se usa exact_rows_before_limit (el límite haría que rows_before_limit_at_least informara como máximo n + offset). La variante con funciones de agregación es incompatible con el heap top-K de GROUP BY de enable_group_by_top_k_optimization en la misma consulta. Como el heap es más rápido, el corte solo se aplica cuando no se puede usar el heap: cuando está deshabilitado, cuando n + offset supera query_plan_max_limit_for_top_k_optimization, cuando max_rows_to_group_by está establecido o cuando el plan de consulta está serializado. Valores posibles:
  • 0 — Optimización deshabilitada.
  • 1 — Optimización habilitada.

optimize_trivial_insert_select

Optimiza la consulta trivial ‘INSERT INTO table SELECT … FROM TABLES’ Combine esta configuración con un valor explícito de max_insert_threads: la optimización limita el SELECT a max_insert_threads threads de lectura, lo que modifica el número de bloques que genera el SELECT.

optimize_trivial_view_pushdown_to_distributed

Cuando está habilitada, en las vistas sobre tablas Distributed cuya lista SELECT contiene únicamente referencias a columnas, * o expresiones (pero sin funciones de ventana ni subconsultas escalares), y que no incluyen agregación, agrupación, ordenación ni joins, la consulta externa completa se envía a cada segmento. Esto permite que el segmento aplique localmente los filtros y las expresiones de la vista, lo que reduce la cantidad de datos transferidos por la red. Valores posibles:
  • 0 — La optimización está deshabilitada; las vistas sobre tablas Distributed siempre se ejecutan en el coordinador.
  • 1 — La optimización está habilitada.
Última modificación el 18 de agosto de 2026