Skip to main content
Ces paramètres sont disponibles dans system.settings et sont générés automatiquement à partir du source.

optimize_or_like_chain

Optimise plusieurs prédicats OR LIKE/ILIKE/match sur une même expression en un seul multiSearchAny/multiSearchAnyCaseInsensitiveUTF8 (pour les motifs %needle% de sous-chaîne pure) ou multiMatchAny (pour les autres motifs, lorsque Hyperscan/Vectorscan est autorisé). Lorsqu’aucun chemin rapide n’est applicable — par exemple si Hyperscan est désactivé ou indisponible, si les motifs sont des expressions régulières match brutes, ne sont pas en UTF-8 valide, contiennent un NUL intégré, ou si la chaîne recherchée est de type FixedString/Enum — la chaîne OR d’origine est conservée telle quelle, car une alternance match combinée sur RE2 est systématiquement plus lente que le OR d’origine à court-circuit. L’optimisation n’est appliquée qu’avec l’analyseur (enable_analyzer = 1, valeur par défaut) ; avec l’ancien analyseur (enable_analyzer = 0), la chaîne OR reste inchangée. Pour les chaînes OR pures de LIKE/ILIKE/match, les expressions d’origine sont conservées dans indexHint() afin de permettre l’analyse d’index ; les chaînes OR mixtes qui incluent des branches non-LIKE n’utilisent volontairement pas l’encapsulation indexHint() afin que les plages correspondant uniquement à la branche non-LIKE ne soient pas élaguées. La réécriture multiMatchAny respecte allow_hyperscan, max_hyperscan_regexp_length, max_hyperscan_regexp_total_length et reject_expensive_hyperscan_regexps. Une chaîne n’est réécrite que lorsqu’elle comporte suffisamment de branches partageant la même expression de gauche pour que la réécriture soit de façon fiable plus rapide qu’une évaluation OR à court-circuit : au moins optimize_or_like_chain_min_substrings branches pour le chemin multiSearchAny, et au moins optimize_or_like_chain_min_patterns branches pour le chemin multiMatchAny.

optimize_or_like_chain_min_patterns

Nombre minimal de branches LIKE/ILIKE/match non de type sous-chaîne pure (motifs de préfixe/suffixe/regexp), partageant la même expression de gauche, requis pour que optimize_or_like_chain réécrive une chaîne en multiMatchAny. Calibré sur le jeu de données hits (voir tests/performance/optimize_or_like_chain_hits.xml) : la réécriture en multiMatchAny (Hyperscan) de chaînes LIKE de préfixe/regexp ne devient plus rapide que l’évaluation OR en court-circuit qu’à partir d’environ neuf branches ; les chaînes plus courtes sont donc conservées telles quelles afin d’éviter toute régression. Une valeur de 0 ou 1 désactive ce seuil. N’a aucun effet lorsque optimize_or_like_chain est désactivé. Voir aussi optimize_or_like_chain_min_substrings pour le cas sous-chaîne pure (multiSearchAny).

optimize_or_like_chain_min_substrings

Nombre minimal de branches LIKE/ILIKE de type sous-chaîne pure (%needle%), partageant la même expression de gauche, nécessaire pour que optimize_or_like_chain réécrive une chaîne en multiSearchAny/multiSearchAnyCaseInsensitiveUTF8. Étalonné sur le jeu de données hits (voir tests/performance/optimize_or_like_chain_hits.xml) : la réécriture en multiSearchAny devient plus rapide que l’évaluation OR en court-circuit à partir d’environ quatre branches. Une valeur de 0 ou 1 désactive le seuil. N’a aucun effet lorsque optimize_or_like_chain est désactivé. Voir aussi optimize_or_like_chain_min_patterns pour le chemin regexp (multiMatchAny).
Dernière modification le 23 juillet 2026