2013-05-20 3 views
14

У меня есть таблица CANDIDATE в моей db, которая работает под MySQL 5.5, и я пытаюсь получить строки из таблицы, где ОЗУ содержит в первом имени, поэтому я могу запускать ниже двух запросов, но я хотел бы сейчас, запрос, который мы должны использовать в долгосрочной перспективе в отношении оптимизации.MySQL | REGEXP VS Like

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

Просто обратите внимание, что если вы ищете экземпляры набора символов/символов, используйте регулярное выражение. –

ответ

3

Если вы можете использовать LIKE вместо REGEXP, использовать LIKE

7

REGEXP и LIKE используются к совершенно другим случаям.

LIKE используется для добавления подстановочных знаков в строку, тогда как REGEXP используется для соответствия атрибуту с регулярными выражениями.

В вашем случае firstname с большей вероятностью будет соответствовать LIKE, чем REGEXP и, следовательно, он будет более оптимизирован.

0

Лучшее использование запроса LIKE вместо REGEXP, если вы не уверены в значении.

Также LIKE намного быстрее, чем REGEXP.