web-dev-qa-db-ja.com

MySQL | REGEXP VS Like

MySQL 5.5で実行されているdbにCANDIDATEテーブルがあり、RAMがfirstnameに含まれているテーブルから行を取得しようとしているため、2つのクエリの下で実行できますが、最適化に関して長期的にどのクエリを使用するべきか、今のように。

SELECT * FROM CANDIDATE c WHERE firstname REGEXP 'ram';
SELECT * FROM CANDIDATE c WHERE firstname LIKE'%ram%';
24
Vardan Gupta

REGEXPLIKEは、まったく異なるケースに使用されます。

LIKEはワイルドカードを文字列に追加するために使用されますが、REGEXPは属性を正規表現と照合するために使用されます。

あなたの場合、firstnameLIKEよりもREGEXPを使用して照合される可能性が高いため、より最適化されます。

10
draxxxeus

REGEXPの代わりにLIKEを使用できる場合は、LIKEを使用します

私はそれを試してみましたMySQL 8.0.13LIKEREGEXPを比較します。

SELECT * FROM table WHERE column LIKE '%foobar%';

クエリは10.0418秒かかりました。

SELECT * FROM table WHERE REGEXP_LIKE(column, 'foobar');

クエリは11.0742秒かかりました。

LIKEパフォーマンスが高速です。 REGEXPの代わりにそれを使用しても問題がなければ、実行してください。

4
Joel Karunungan

値が不明な場合は、REGEXPの代わりにLIKEクエリを使用する。

また、LIKEはREGEXPよりもはるかに高速です。

1
Rahul