32

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

SELECT * FROM CANDIDATE c WHERE firstname REGEXP 'ram';
SELECT * FROM CANDIDATE c WHERE firstname LIKE'%ram%';
4

5 に答える 5

12

REGEXPLIKEまったく異なるケースに慣れています。

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

あなたの場合、 aはよりもfirstname使用して一致する可能性が高いため、LIKEよりREGEXP最適化されます。

于 2013-05-20T09:47:09.893 に答える
6

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

于 2013-05-20T09:45:54.733 に答える
0

値が不明な場合は、REGEXP の代わりに LIKE クエリを使用することをお勧めします。

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

于 2016-01-25T05:42:48.920 に答える