Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Desempenho de RegEx vs LIKE em consultas MySql


É possível que seja mais rápido porque a condição LIKE pode ser avaliada mais rapidamente do que a expressão regular, portanto, se a maioria das linhas falhar no teste, poderá ser mais rápido. No entanto, será mais lento se a maioria das linhas for bem-sucedida, pois dois testes devem ser executados para linhas bem-sucedidas em vez de apenas um. Também depende de qual expressão o otimizador escolhe executar primeiro.

Uma aceleração ainda maior pode ser testemunhada se você tiver algo assim:
SELECT * FROM (
   SELECT * FROM lineage_string
   WHERE lineage LIKE '179%'
) WHERE lineage regexp '^179(/|$)'

Agora, um índice pode ser usado para encontrar linhas prováveis ​​porque LIKE '179%' é sargable . Muitas linhas não precisarão ser verificadas.

Como sempre, a melhor maneira de ter certeza é medi-lo por conta própria com seus dados reais.