Mysql
 sql >> Base de données >  >> RDS >> Mysql

Performances de RegEx vs LIKE dans les requêtes MySql

Il est possible que cela soit plus rapide car la condition LIKE peut être évaluée plus rapidement que l'expression régulière, donc si la plupart des lignes échouent au test, cela pourrait être plus rapide. Cependant, il sera plus lent si la plupart des lignes réussissent car deux tests doivent être exécutés pour les lignes réussies au lieu d'un seul. Cela dépend également de l'expression que l'optimiseur choisit d'exécuter en premier.

Une accélération encore plus grande peut être observée si vous avez quelque chose comme ceci :

SELECT * FROM (
   SELECT * FROM lineage_string
   WHERE lineage LIKE '179%'
) WHERE lineage regexp '^179(/|$)'

Maintenant, un index peut être utilisé pour trouver des lignes probables car LIKE '179%' est sargable . De nombreuses lignes n'auront pas besoin d'être vérifiées du tout.

Comme toujours, le meilleur moyen d'en être sûr est de le mesurer par vous-même sur vos données réelles.