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

optimize_or_like_chain

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.

optimize_or_like_chain_min_patterns

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).

optimize_or_like_chain_min_substrings

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).
Última modificación el 23 de julio de 2026