> ## 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 optimize_or_like_chain_*

> Ajustes de sesión de ClickHouse del grupo generado optimize_or_like_chain_*.

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>;
};

Estas configuraciones 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="optimize_or_like_chain">
  ## optimize\_or\_like\_chain
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "Habilitado de forma predeterminada: optimiza cadenas `OR` de `LIKE`/`ILIKE`/`match` en `multiSearchAny` (patrones de subcadena pura) o `multiMatchAny` (otros patrones, cuando se permite Hyperscan\/Vectorscan); cuando no se aplica ninguna vía rápida, la cadena `OR` original se mantiene sin cambios."}]}]} />

Optimiza varios predicados `OR LIKE/ILIKE/match` sobre la misma expresión en una sola llamada a `multiSearchAny`/`multiSearchAnyCaseInsensitiveUTF8` (para patrones `%needle%` de subcadena pura) o `multiMatchAny` (para otros patrones, cuando se permite Hyperscan/Vectorscan). Cuando no se puede aplicar ninguna vía rápida —por ejemplo, cuando Hyperscan está deshabilitado o no está disponible, o los patrones son expresiones regulares `match` sin procesar, no son UTF-8 válidos, contienen un NUL incrustado, o la cadena de entrada es `FixedString`/`Enum`— la cadena `OR` original se mantiene sin cambios, porque una alternancia `match` combinada sobre RE2 es sistemáticamente más lenta que el `OR` original con evaluación de cortocircuito.

La optimización solo se aplica con el analizador (`enable_analyzer = 1`, valor predeterminado); con el analizador antiguo (`enable_analyzer = 0`), la cadena `OR` se deja sin cambios. En las cadenas `OR` formadas únicamente por `LIKE`/`ILIKE`/`match`, las expresiones originales se conservan en `indexHint()` para permitir el análisis de índices; las cadenas `OR` mixtas que incluyen ramas que no son `LIKE` omiten intencionadamente el encapsulamiento con `indexHint()` para evitar que se poden rangos que solo coinciden con la rama no `LIKE`. La reescritura de `multiMatchAny` respeta `allow_hyperscan`, `max_hyperscan_regexp_length`, `max_hyperscan_regexp_total_length` y `reject_expensive_hyperscan_regexps`.

Una cadena solo se reescribe cuando tiene suficientes ramas que comparten la misma expresión del lado izquierdo como para que la reescritura sea, de forma fiable, más rápida que la evaluación de `OR` con cortocircuito: al menos `optimize_or_like_chain_min_substrings` ramas para la vía `multiSearchAny`, y al menos `optimize_or_like_chain_min_patterns` ramas para la vía `multiMatchAny`.

<div id="optimize_or_like_chain_min_patterns">
  ## optimize\_or\_like\_chain\_min\_patterns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "10"},{"label": "Nueva configuración que controla el número mínimo de ramas LIKE\/ILIKE\/match no de subcadena pura (que comparten la misma expresión del lado izquierdo) necesario para que optimize_or_like_chain reescriba una cadena como multiMatchAny. Las cadenas más cortas se mantienen tal cual porque la reescritura a multiMatchAny (Hyperscan) solo empieza a ser más rápida que la evaluación OR con cortocircuito a partir de unas nueve ramas."}]}]} />

Número mínimo de ramas `LIKE`/`ILIKE`/`match` no de subcadena pura (patrones de prefijo/sufijo/regexp) que comparten la misma expresión del lado izquierdo, necesario para que `optimize_or_like_chain` reescriba una cadena como `multiMatchAny`. Calibrado con el conjunto de datos `hits` (consulta `tests/performance/optimize_or_like_chain_hits.xml`): la reescritura a `multiMatchAny` (Hyperscan) de cadenas `LIKE` de prefijo/regexp solo empieza a ser más rápida que la evaluación `OR` con cortocircuito a partir de unas nueve ramas, por lo que las cadenas más cortas se mantienen tal cual para evitar una regresión del rendimiento. Un valor de 0 o 1 desactiva el umbral. No tiene efecto cuando `optimize_or_like_chain` está deshabilitado. Consulta también `optimize_or_like_chain_min_substrings` para la ruta de subcadena pura (`multiSearchAny`).

<div id="optimize_or_like_chain_min_substrings">
  ## optimize\_or\_like\_chain\_min\_substrings
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "4"},{"label": "Nueva configuración que controla el número mínimo de ramas `LIKE`/`ILIKE` de subcadena pura (%needle%) (que comparten la misma expresión del lado izquierdo) necesario para que optimize_or_like_chain reescriba una cadena como multiSearchAny."}]}]} />

Número mínimo de ramas `LIKE`/`ILIKE` de subcadena pura (`%needle%`) que comparten la misma expresión del lado izquierdo, necesario para que `optimize_or_like_chain` reescriba una cadena como `multiSearchAny`/`multiSearchAnyCaseInsensitiveUTF8`. Calibrado con el conjunto de datos `hits` (consulte `tests/performance/optimize_or_like_chain_hits.xml`): la reescritura a `multiSearchAny` resulta más rápida que la evaluación `OR` con cortocircuito a partir de aproximadamente cuatro ramas. Un valor de 0 o 1 desactiva el umbral. No tiene efecto cuando `optimize_or_like_chain` está deshabilitado. Consulte también `optimize_or_like_chain_min_patterns` para la ruta de regexp (`multiMatchAny`).
