Es posible que pueda ser 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, la prueba podría ser más rápida. Sin embargo, será más lento si la mayoría de las filas tienen éxito ya que se deben ejecutar dos pruebas para las filas exitosas en lugar de solo una. También depende de qué expresión el optimizador elija ejecutar primero.
una aceleración aún más grande puede ser testigo si tiene algo como esto:
SELECT * FROM (
SELECT * FROM lineage_string
WHERE lineage LIKE '179%'
) WHERE lineage regexp '^179(/|$)'
Ahora un índice puede ser usado para encontrar posibles filas porque como '179%' es sargable. Muchas filas no necesitarán ser revisadas en absoluto.
Como siempre, la mejor manera de estar seguro es midiéndolo usted mismo con sus datos reales.
De acuerdo con esta publicación de blog mal soportada, LIKE fue 10 veces más rápido que REGEXP (los datos pueden variar, no hay palabras sobre el uso del índice, etc.): http://thingsilearn.wordpress.com/2008/02/28/mysql-query -speed-regexp-vs-like/ –
Enlace adicional: la misma historia, LIKE es más rápido: http://lists.mysql.com/mysql/101728 –
Definitivamente fue más rápido para los campos 'TEXT' y' VARCHAR' Lo probé en. Recuerdo haber leído en un blog que ** REGEXP ** es más rápido que ** LIKE ** para los campos 'UNSIGNED', pero no puedo confirmarlo. – inhan