Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leistung von RegEx im Vergleich zu LIKE in MySQL-Abfragen

Es ist möglich, dass es schneller sein könnte, da die LIKE-Bedingung schneller ausgewertet werden kann als der reguläre Ausdruck. Wenn also die meisten Zeilen den Test nicht bestehen, könnte es schneller sein. Es wird jedoch langsamer, wenn die meisten Zeilen erfolgreich sind, da zwei Tests für erfolgreiche Zeilen statt nur einem ausgeführt werden müssen. Es hängt auch davon ab, welchen Ausdruck der Optimierer zuerst auswählt.

Eine noch größere Beschleunigung kann beobachtet werden, wenn Sie so etwas haben:

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

Jetzt kann ein Index verwendet werden, um wahrscheinliche Zeilen zu finden, da LIKE '179%' sargbar . Viele Zeilen müssen überhaupt nicht überprüft werden.

Wie immer ist der beste Weg, um sicherzugehen, es selbst anhand Ihrer tatsächlichen Daten zu messen.