Mysql
 sql >> Database >  >> RDS >> Mysql

Prestazioni di RegEx vs LIKE nelle query MySql

È possibile che possa essere più veloce perché la condizione LIKE può essere valutata più rapidamente dell'espressione regolare, quindi se la maggior parte delle righe fallisce il test potrebbe essere più veloce. Tuttavia, sarà più lento se la maggior parte delle righe ha esito positivo poiché è necessario eseguire due test per le righe riuscite anziché solo una. Dipende anche dall'espressione che l'ottimizzatore sceglie di eseguire per prima.

Un aumento di velocità ancora maggiore può essere assistito se hai qualcosa del genere:

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

Ora è possibile utilizzare un indice per trovare righe probabili perché LIKE '179%' è sargable . Molte righe non dovranno essere controllate affatto.

Come sempre il modo migliore per esserne sicuri è misurarlo da solo sui tuoi dati effettivi.