sql >> Base de Datos >  >> RDS >> Mysql

Rendimiento de RegEx vs LIKE en consultas MySql

Es posible que sea más rápido porque la condición LIKE se puede evaluar más rápidamente que la expresión regular, por lo que si la mayoría de las filas fallan en la prueba, podría ser más rápido. Sin embargo, será más lento si la mayoría de las filas tienen éxito, ya que se deben ejecutar dos pruebas para filas exitosas en lugar de solo una. También depende de qué expresión elija ejecutar primero el optimizador.

Se puede presenciar una aceleración aún mayor si tiene algo como esto:

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

Ahora se puede usar un índice para encontrar filas probables porque LIKE '179%' es sargable . Muchas filas no necesitarán ser revisadas en absoluto.

Como siempre, la mejor manera de estar seguro es medirlo usted mismo con sus datos reales.