2013-05-20 9 views
14

Mam tabelę CANDIDATE w mojej db, która działa pod MySQL 5.5 i staram się uzyskać wiersze z tabeli, gdzie RAM zawiera się w imię, więc mogę uruchomić poniżej dwóch zapytań, ale chciałbym teraz, który zapytanie, które powinniśmy stosować przez długi czas w odniesieniu do optymalizacji.MySQL | REGEXP VS Podobnie jak

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

Uwaga: jeśli szukasz instancji zestawu znaków/znaków, użyj wyrażenia regularnego. –

Odpowiedz

3

Jeśli można używać jak zamiast REGEXP, wykorzystanie takich jak

7

REGEXP i LIKE są wykorzystywane w zupełnie różnych przypadkach.

LIKE służy do dodawania symboli wieloznacznych do ciągów znaków, natomiast REGEXP służy do dopasowania atrybutu do wyrażeń regularnych.

W twoim przypadku bardziej prawdopodobne jest dopasowanie firstname przy użyciu LIKE niż REGEXP i tym samym będzie bardziej zoptymalizowane.

0

Lepsze użycie zapytania LIKE zamiast REGEXP, jeśli nie masz pewności co do wartości.

Również LIKE jest znacznie szybszy niż REGEXP.