sql >> Database >  >> RDS >> Mysql

Prestaties van RegEx versus LIKE in MySql-query's

Het is mogelijk dat het sneller kan omdat de LIKE-voorwaarde sneller kan worden geëvalueerd dan de reguliere expressie, dus als de meeste rijen de test niet doorstaan, kan het sneller zijn. Het zal echter langzamer zijn als de meeste rijen slagen, aangezien twee tests moeten worden uitgevoerd voor succesvolle rijen in plaats van slechts één. Het hangt ook af van welke expressie de optimizer kiest om als eerste uit te voeren.

Een nog grotere versnelling kan worden waargenomen als je zoiets als dit hebt:

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

Nu kan een index worden gebruikt om waarschijnlijke rijen te vinden, omdat LIKE '179%' sargable . Veel rijen hoeven helemaal niet te worden gecontroleerd.

Zoals altijd is de beste manier om er zeker van te zijn, het voor jezelf te meten aan de hand van je werkelijke gegevens.



  1. PLS-00306:verkeerd aantal of typen argumenten in aanroep naar 'OUTPUT_ARRAY'

  2. Hoe kan ik ALLEEN records van gisteren selecteren?

  3. PHP - MySQL-query met Paginering

  4. Shell-script met sqlplus en speciale tekens op wachtwoord