MySQL 5.5で実行されているデータベースにCANDIDATEテーブルがあり、RAMがfirstnameに含まれているテーブルから行を取得しようとしているため、2つのクエリの下で実行できますが、どのクエリに使用する必要があるかを知りたいです最適化に関して長期的に。
SELECT * FROM CANDIDATE c WHERE firstname REGEXP 'ram';
SELECT * FROM CANDIDATE c WHERE firstname LIKE'%ram%';
MySQL 5.5で実行されているデータベースにCANDIDATEテーブルがあり、RAMがfirstnameに含まれているテーブルから行を取得しようとしているため、2つのクエリの下で実行できますが、どのクエリに使用する必要があるかを知りたいです最適化に関して長期的に。
SELECT * FROM CANDIDATE c WHERE firstname REGEXP 'ram';
SELECT * FROM CANDIDATE c WHERE firstname LIKE'%ram%';
REGEXP
LIKE
まったく異なるケースに慣れています。
LIKE
は文字列にワイルドカードを追加するためにREGEXP
使用され、属性を正規表現と一致させるために使用されます。
あなたの場合、 aはよりもfirstname
使用して一致する可能性が高いため、LIKE
よりREGEXP
最適化されます。
REGEXP の代わりに LIKE を使用できる場合は、LIKE を使用します。
値が不明な場合は、REGEXP の代わりに LIKE クエリを使用することをお勧めします。
また、LIKE は REGEXP よりもはるかに高速です。