MySQL 5.5で実行されているdbにCANDIDATEテーブルがあり、RAMがfirstnameに含まれているテーブルから行を取得しようとしているため、2つのクエリの下で実行できますが、最適化に関して長期的にどのクエリを使用するべきか、今のように。
SELECT * FROM CANDIDATE c WHERE firstname REGEXP 'ram';
SELECT * FROM CANDIDATE c WHERE firstname LIKE'%ram%';
REGEXP
とLIKE
は、まったく異なるケースに使用されます。
LIKE
はワイルドカードを文字列に追加するために使用されますが、REGEXP
は属性を正規表現と照合するために使用されます。
あなたの場合、firstname
はLIKE
よりもREGEXP
を使用して照合される可能性が高いため、より最適化されます。
REGEXPの代わりにLIKEを使用できる場合は、LIKEを使用します
私はそれを試してみましたMySQL 8.0.13
とLIKE
とREGEXP
を比較します。
SELECT * FROM table WHERE column LIKE '%foobar%';
クエリは10.0418秒かかりました。
SELECT * FROM table WHERE REGEXP_LIKE(column, 'foobar');
クエリは11.0742秒かかりました。
LIKE
パフォーマンスが高速です。 REGEXP
の代わりにそれを使用しても問題がなければ、実行してください。
値が不明な場合は、REGEXPの代わりにLIKEクエリを使用する。
また、LIKEはREGEXPよりもはるかに高速です。