> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ajustes de sesión de query_plan_*

> Ajustes de sesión de ClickHouse en el grupo generado query_plan_*.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Predeterminado</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modificable sin reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Funcionalidad experimental. <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">Más información.</a></u>
        </div>;
};

Estos ajustes están disponibles en [system.settings](/docs/es/reference/system-tables/settings) y se generan automáticamente a partir del [código fuente](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="query_plan_aggregation_in_order">
  ## query\_plan\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.12"},{"label": "1"},{"label": "Habilita cierta refactorización relacionada con el plan de consulta"}]}]} />

Activa la optimización de agregación en orden a nivel del plan de consulta.
Solo surte efecto si la configuración [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que los desarrolladores solo deben usar para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_convert_any_join_to_semi_or_anti_join">
  ## query\_plan\_convert\_any\_join\_to\_semi\_or\_anti\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nueva configuración."}]}]} />

Permite convertir ANY JOIN en SEMI o ANTI JOIN si el filtro posterior a JOIN siempre se evalúa como falso para las filas coincidentes o no coincidentes

<div id="query_plan_convert_join_to_in">
  ## query\_plan\_convert\_join\_to\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Nueva configuración"}]}]} />

Permite convertir `JOIN` en una subconsulta con `IN` si las columnas de salida están asociadas únicamente a la tabla izquierda. Puede producir resultados incorrectos con JOIN que no sean ANY (por ejemplo, ALL JOIN, que es el valor predeterminado).

<div id="query_plan_convert_outer_join_to_inner_join">
  ## query\_plan\_convert\_outer\_join\_to\_inner\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "Permite convertir OUTER JOIN en INNER JOIN si el filtro después del JOIN siempre filtra los valores predeterminados"}]}]} />

Permite convertir `OUTER JOIN` en `INNER JOIN` si el filtro después del `JOIN` siempre filtra los valores predeterminados

<div id="query_plan_direct_read_from_text_index">
  ## query\_plan\_direct\_read\_from\_text\_index
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "El índice de texto ahora es GA"}]}, {"id": "row-2","items": [{"label": "25.9"},{"label": "1"},{"label": "Nueva configuración."}]}]} />

Permite realizar el filtrado de búsqueda de texto completo en el plan de consulta usando únicamente el índice invertido de texto.

<div id="query_plan_display_internal_aliases">
  ## query\_plan\_display\_internal\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Nueva configuración"}]}]} />

Muestra los alias internos (como \_\_table1) en EXPLAIN PLAN en lugar de los especificados en la consulta original.

<div id="query_plan_enable_multithreading_after_window_functions">
  ## query\_plan\_enable\_multithreading\_after\_window\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Habilita el procesamiento multihilo después de evaluar las funciones de ventana para permitir el procesamiento de flujo en paralelo

<div id="query_plan_enable_optimizations">
  ## query\_plan\_enable\_optimizations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva la optimización a nivel del plan de consulta.

<Note>
  Esta es una configuración de nivel experto que solo debería usarse para tareas de depuración por parte de los desarrolladores. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Desactiva todas las optimizaciones a nivel del plan de consulta
* 1 - Activa las optimizaciones a nivel del plan de consulta (aunque algunas optimizaciones individuales aún pueden desactivarse mediante sus propias configuraciones)

<div id="query_plan_execute_functions_after_sorting">
  ## query\_plan\_execute\_functions\_after\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva una optimización a nivel del plan de consulta que desplaza las expresiones después de los pasos de ordenación.
Solo tiene efecto si la configuración [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que los desarrolladores solo deben usar para depuración. La configuración puede cambiar en el futuro de forma incompatible con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_filter_push_down">
  ## query\_plan\_filter\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva una optimización a nivel del plan de consulta que desplaza los filtros hacia abajo en el plan de ejecución.
Solo tiene efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que los desarrolladores solo deben usar para depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Desactivar
* 1 - Activar

<div id="query_plan_join_shard_by_pk_ranges">
  ## query\_plan\_join\_shard\_by\_pk\_ranges
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "Nueva opción"}]}]} />

Aplica la segmentación para JOIN si las claves de JOIN incluyen un prefijo de PRIMARY KEY en ambas tablas. Se admite para los algoritmos hash, parallel\_hash y full\_sorting\_merge. Normalmente no acelera las consultas, pero puede reducir el consumo de memoria.

<div id="query_plan_join_swap_table">
  ## query\_plan\_join\_swap\_table
</div>

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "auto"},{"label": "Nueva configuración. Antes siempre se elegía la tabla derecha."}]}]} />

Determina qué lado del join debe ser la tabla de construcción (también llamada interna, la que se inserta en la tabla hash para un hash join) en el plan de consulta. Esta configuración solo es compatible con la strictness `ALL` del join con la cláusula `JOIN ON`. Los valores posibles son:

* 'auto': Deja que el planificador decida qué tabla usar como tabla de construcción.
* 'false': Nunca intercambies las tablas (la tabla derecha es la tabla de construcción).
* 'true': Intercambia siempre las tablas (la tabla izquierda es la tabla de construcción).

<div id="query_plan_lift_up_array_join">
  ## query\_plan\_lift\_up\_array\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva una optimización a nivel del plan de consulta que desplaza los ARRAY JOIN hacia arriba en el plan de ejecución.
Solo tiene efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que solo deben usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Desactivar
* 1 - Activar

<div id="query_plan_lift_up_union">
  ## query\_plan\_lift\_up\_union
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva una optimización a nivel del plan de consulta que mueve subárboles más grandes del plan de consulta a union para permitir optimizaciones adicionales.
Solo tiene efecto si la configuración [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que los desarrolladores solo deberían usar para depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_max_limit_for_join_lazy_indexing">
  ## query\_plan\_max\_limit\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1000"},{"label": "Se añadió una nueva configuración para controlar el límite máximo que permite usar el plan de consulta para la optimización de indexación diferida en JOIN. Si es cero, no hay límite"}]}]} />

Controla el límite máximo que permite usar el plan de consulta para la optimización de indexación diferida en JOIN. Si es cero, no hay límite.

<div id="query_plan_max_limit_for_lazy_materialization">
  ## query\_plan\_max\_limit\_for\_lazy\_materialization
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "10"},{"label": "Se añadió una nueva configuración para controlar el valor máximo del límite que permite usar el plan de consulta para la optimización de materialización diferida. Si es cero, no hay límite"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10000"},{"label": "Se aumentó el límite tras la mejora del rendimiento"}]}, {"id": "row-3","items": [{"label": "25.11"},{"label": "100"},{"label": "Más optimizado"}]}]} />

Controla el valor máximo del límite que permite usar el plan de consulta para la optimización de materialización diferida. Si es cero, no hay límite.

<div id="query_plan_max_limit_for_top_k_optimization">
  ## query\_plan\_max\_limit\_for\_top\_k\_optimization
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "Nueva configuración."}]}]} />

Controla el valor máximo del límite que permite evaluar el plan de consulta para la optimización TopK mediante el índice de omisión minmax y el filtrado dinámico por umbral. Si es cero, no hay límite.

<div id="query_plan_max_optimizations_to_apply">
  ## query\_plan\_max\_optimizations\_to\_apply
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Limita el número total de optimizaciones aplicadas al plan de consulta; consulte la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations).
Es útil para evitar tiempos de optimización prolongados en consultas complejas.
En la consulta EXPLAIN PLAN, deja de aplicar optimizaciones cuando se alcanza este límite y devuelve el plan tal cual.
En la ejecución normal de consultas, si el número real de optimizaciones supera esta configuración, se lanza una excepción.

<Note>
  Esta es una configuración de nivel experto que solo deberían usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de forma incompatible con versiones anteriores o eliminarse.
</Note>

<div id="query_plan_max_set_size_for_projection_match">
  ## query\_plan\_max\_set\_size\_for\_projection\_match
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "10000"},{"label": "Se agregó una nueva configuración que limita el coste de los conjuntos de la cláusula `IN` con hash de contenido en el comparador de proyecciones (por ahora: proyección de agregación). Los conjuntos que superan el límite se tratan como no coincidentes. El valor cero desactiva por completo la comparación de hash de contenido (valor de compatibility: la coincidencia de proyección nunca se completa correctamente en nodos con conjuntos `IN`)."}]}]} />

Número máximo de filas de un conjunto de la cláusula `IN` para el que el comparador de proyecciones calcula y compara hashes de contenido al decidir si dos conjuntos son iguales. Los conjuntos que superan este valor se tratan como no coincidentes y omiten la proyección. El valor cero desactiva por completo la comparación de hash de contenido: una coincidencia de proyección nunca se completa correctamente en nodos que contienen conjuntos de la cláusula `IN`.

Lo utiliza el comparador de proyección de agregación (y cualquier comparador de proyección futuro que necesite comparar conjuntos de la cláusula `IN`). Calcular el hash de contenido es `O(N log N)` en función del número de elementos del conjunto; esta configuración limita el coste asumido durante la planificación cuando aparecen muchas cláusulas `IN` en la consulta o en la proyección.

<div id="query_plan_max_step_description_length">
  ## query\_plan\_max\_step\_description\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "500"},{"label": "Nuevo ajuste"}]}]} />

Longitud máxima de la descripción de un paso en EXPLAIN PLAN.

<div id="query_plan_merge_expression_into_join">
  ## query\_plan\_merge\_expression\_into\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "Nueva configuración. Permite fusionar el paso Expression con el paso JOIN durante la optimización del reordenamiento de JOIN."}]}]} />

Permite fusionar expresiones en el paso JOIN durante la optimización del reordenamiento de JOIN.

<div id="query_plan_merge_expressions">
  ## query\_plan\_merge\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva una optimización a nivel del plan de consulta que fusiona filtros consecutivos.
Solo tiene efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que los desarrolladores solo deben usar para tareas de depuración. La configuración puede cambiar en el futuro de forma no retrocompatible o eliminarse.
</Note>

Posibles valores:

* 0 - Desactivar
* 1 - Activar

<div id="query_plan_merge_filter_into_join_condition">
  ## query\_plan\_merge\_filter\_into\_join\_condition
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Se añadió una nueva opción de configuración para fusionar el filtro con la condición de JOIN"}]}]} />

Permite fusionar el filtro con la condición de `JOIN` y convertir `CROSS JOIN` en `INNER`.

<div id="query_plan_merge_filters">
  ## query\_plan\_merge\_filters
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Permite fusionar filtros en el plan de consulta"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Permite fusionar filtros en el plan de consulta. Esto es necesario para admitir correctamente el push-down de filtros con el analizador."}]}]} />

Permite fusionar filtros en el plan de consulta.

<div id="query_plan_min_columns_for_join_lazy_indexing">
  ## query\_plan\_min\_columns\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "3"},{"label": "Controla el número mínimo de columnas del payload del lado izquierdo necesario para habilitar la optimización de indexación diferida en JOIN"}]}]} />

Controla el número mínimo de columnas del payload del lado izquierdo necesario para habilitar la optimización de indexación diferida en JOIN. 0 significa que la optimización está deshabilitada.

<div id="query_plan_optimize_join_order_algorithm">
  ## query\_plan\_optimize\_join\_order\_algorithm
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="JoinOrderAlgorithm" default_value="greedy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "greedy"},{"label": "Nueva configuración experimental."}]}]} />

Especifica qué algoritmos de orden de JOIN se intentan durante la optimización del plan de consulta. Están disponibles los siguientes algoritmos:

* 'greedy' - algoritmo voraz básico: funciona rápido, pero puede no producir el mejor orden de join
* 'dpsize' - implementa el algoritmo DPsize, actualmente solo para INNER JOIN: considera todos los órdenes de join posibles y encuentra el más óptimo, pero puede ser lento para consultas con muchas tablas y predicados de join.
* 'dpsub' - implementa el algoritmo DPsub, que admite tanto INNER JOIN como joins que no son INNER: considera todos los órdenes de join posibles y encuentra el más óptimo, pero puede ser lento para consultas con muchas tablas y predicados de join.
* 'dphyp' - implementa el algoritmo DPhyp (programación dinámica mediante partición de hipergrafos), actualmente solo para INNER JOIN: explora el mismo espacio de búsqueda que `dpsize`, pero enumera solo pares de subgrafos conectados, lo que genera menos joins intermedios en grafos de join dispersos, a costa de no considerar productos cartesianos
  Se pueden especificar varios algoritmos como una lista separada por comas; por ejemplo, `dphyp,greedy`. Se prueban en orden; si un algoritmo no puede procesar la consulta (p. ej., debido a OUTER JOIN o a componentes desconectados), se usa el siguiente como fallback.

<div id="query_plan_optimize_join_order_limit">
  ## query\_plan\_optimize\_join\_order\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nueva opción de configuración"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10"},{"label": "Permitir el reordenamiento de JOIN con más tablas de forma predeterminada"}]}]} />

Optimiza el orden de los JOIN dentro de la misma subconsulta. Actualmente, solo se admite en casos muy limitados.
El valor es el número máximo de tablas que se pueden optimizar.

<div id="query_plan_optimize_join_order_max_searched_plans">
  ## query\_plan\_optimize\_join\_order\_max\_searched\_plans
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "100000"},{"label": "Nueva configuración para limitar el número de planes parciales que el optimizador del orden de join enumera antes de pasar al siguiente algoritmo."}]}]} />

Número máximo de planes parciales que el optimizador del orden de join puede enumerar antes de detenerse y pasar al siguiente algoritmo en `query_plan_optimize_join_order_algorithm`.
Esto limita de forma determinista el tiempo de optimización (independientemente del tiempo de reloj) en grafos de join densos, como cliques o estrellas, donde el espacio de búsqueda crece exponencialmente.
Establézcalo en 0 para desactivar el límite. No tiene efecto sobre el valor predeterminado de `query_plan_optimize_join_order_limit`, donde la búsqueda siempre se mantiene muy por debajo de este umbral.

<div id="query_plan_optimize_join_order_randomize">
  ## query\_plan\_optimize\_join\_order\_randomize
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nueva configuración para aleatorizar las estadísticas del orden de JOIN para pruebas."}]}]} />

Cuando es distinto de cero, el optimizador de orden de JOIN utiliza cardinalidades y NDV generados aleatoriamente en lugar de estadísticas reales.
Cuando se establece en 1, se genera una semilla aleatoria; cuando se establece en un valor > 1, ese valor se usa directamente como semilla.
Está pensado para pruebas, con el fin de encontrar errores provocados por distintos órdenes de JOIN.

<div id="query_plan_optimize_lazy_final">
  ## query\_plan\_optimize\_lazy\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nueva configuración para optimizar la lectura con FINAL en ReplacingMergeTree mediante análisis de índices basado en conjuntos"}]}]} />

Optimiza la lectura con FINAL en ReplacingMergeTree creando un conjunto de claves primarias y usándolo para el análisis de índices.

<div id="query_plan_optimize_lazy_materialization">
  ## query\_plan\_optimize\_lazy\_materialization
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Se añadió una nueva configuración para usar el plan de consulta para la optimización de materialización diferida"}]}]} />

Usar el plan de consulta para la optimización de materialización diferida.

<div id="query_plan_optimize_prewhere">
  ## query\_plan\_optimize\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Permite aplicar el filtro en la expresión PREWHERE para los almacenamientos compatibles"}]}]} />

Permite aplicar el filtro en la expresión PREWHERE para los almacenamientos compatibles

<div id="query_plan_push_down_limit">
  ## query\_plan\_push\_down\_limit
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva una optimización a nivel del plan de consulta que desplaza los LIMIT hacia abajo en el plan de ejecución.
Solo tiene efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que solo los desarrolladores deberían usar para depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Posibles valores:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_push_limit_by_into_sort">
  ## query\_plan\_push\_limit\_by\_into\_sort
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "Nueva configuración que aplica un LIMIT BY por flujo en la canalización de ordenación cuando las columnas de LIMIT BY son un prefijo de ORDER BY, lo que reduce las filas que pasan por la combinación final."}]}]} />

Activa o desactiva una optimización a nivel del plan de consulta para las consultas `ORDER BY ... LIMIT BY`. Cuando las columnas de `LIMIT BY` son un prefijo de la cláusula `ORDER BY`, cada flujo ordenado en paralelo aplica `LIMIT BY` antes de que los flujos se combinen en uno solo, lo que reduce las filas procesadas por la combinación final y por las etapas posteriores de la canalización. Acelera las consultas en las que `LIMIT BY` descarta una gran parte de las filas.

Solo surte efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_read_in_order">
  ## query\_plan\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Activa o desactiva la optimización de lectura en orden a nivel del plan de consulta.
Solo tiene efecto si la configuración [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que los desarrolladores solo deben usar para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_read_in_order_through_join">
  ## query\_plan\_read\_in\_order\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nueva configuración"}]}]} />

Mantiene la lectura en orden de la tabla izquierda en las operaciones JOIN, lo que puede aprovecharse en pasos posteriores.

<div id="query_plan_remove_redundant_distinct">
  ## query\_plan\_remove\_redundant\_distinct
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "Elimina el paso Distinct redundante del plan de consulta"}]}]} />

Activa o desactiva una optimización del plan de consulta que elimina pasos DISTINCT redundantes.
Solo surte efecto si la configuración [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que solo deben usar los desarrolladores para depuración. La configuración puede cambiar en el futuro de manera incompatible con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_remove_redundant_sorting">
  ## query\_plan\_remove\_redundant\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.1"},{"label": "1"},{"label": "Elimina la ordenación redundante en el plan de consulta. Por ejemplo, los pasos de ordenación relacionados con cláusulas ORDER BY en subconsultas"}]}]} />

Activa una optimización a nivel de plan de consulta que elimina pasos de ordenación redundantes, por ejemplo, en subconsultas.
Solo tiene efecto si la configuración [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que los desarrolladores solo deben usar para depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_remove_unused_columns">
  ## query\_plan\_remove\_unused\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nueva configuración. Añade una optimización para eliminar las columnas no utilizadas en el plan de consulta."}]}]} />

Activa o desactiva una optimización a nivel de plan de consulta que intenta eliminar las columnas no utilizadas (tanto de entrada como de salida) de los pasos del plan de consulta.
Solo surte efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que solo debe usarse para depuración por parte de los desarrolladores. La configuración puede cambiar en el futuro de manera incompatible con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_reuse_storage_ordering_for_window_functions">
  ## query\_plan\_reuse\_storage\_ordering\_for\_window\_functions
</div>

**Alias**: `optimize_read_in_window_order`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Desactiva esta lógica de forma predeterminada."}]}]} />

Activa una optimización a nivel del plan de consulta que aprovecha el orden de almacenamiento al ordenar para funciones de ventana.
Solo surte efecto si la configuración [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

<Note>
  Esta es una configuración de nivel experto que solo deberían usar los desarrolladores para depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_split_filter">
  ## query\_plan\_split\_filter
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<Note>
  Esta es una configuración para expertos que solo deben usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de formas incompatibles con versiones anteriores o eliminarse.
</Note>

Activa una optimización a nivel del plan de consulta que divide los filtros en expresiones.
Solo surte efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar

<div id="query_plan_text_index_add_hint">
  ## query\_plan\_text\_index\_add\_hint
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nueva configuración"}]}]} />

Permite añadir una pista (predicado adicional) al filtrado generado a partir del índice de texto invertido en el plan de consulta.

<div id="query_plan_top_k_through_join">
  ## query\_plan\_top\_k\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nueva configuración para habilitar una optimización a nivel del plan de consulta que propaga ORDER BY ... LIMIT n a través de un join LEFT\/RIGHT cuando la clave de ordenación solo hace referencia al lado preservado."}]}]} />

Activa una optimización a nivel del plan de consulta que propaga `ORDER BY ... LIMIT n` a través de un join cuando la clave de ordenación solo hace referencia a columnas del lado preservado por el join (LEFT/RIGHT). Limita cuántas filas debe producir la entrada del lado preservado antes de realizar el join.
Solo surte efecto si la configuración [query\_plan\_enable\_optimizations](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) es 1.

Posibles valores:

* 0 - Deshabilitado
* 1 - Habilitado

<div id="query_plan_try_use_vector_search">
  ## query\_plan\_try\_use\_vector\_search
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Nueva configuración."}]}]} />

Activa una optimización a nivel del plan de consulta que intenta usar el índice de similitud vectorial.
Solo surte efecto si la opción [`query_plan_enable_optimizations`](/docs/es/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) tiene el valor 1.

<Note>
  Esta es una configuración de nivel experto que solo deben usar los desarrolladores para tareas de depuración. La configuración puede cambiar en el futuro de forma no retrocompatible o eliminarse.
</Note>

Valores posibles:

* 0 - Deshabilitar
* 1 - Habilitar
