MySQL | REGEXP VS Like - программирование
Подтвердить что ты не робот

MySQL | REGEXP VS Like

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

Я попробовал это на MySQL 8.0.13 и сравнил LIKE REGEXP в таблице со строками 1M+ в столбце с индексом:

SELECT * FROM table WHERE column LIKE '%foobar%';

Запрос занял 10.0418 секунд.

SELECT * FROM table WHERE REGEXP_LIKE(column, 'foobar');

Запрос занял 11,0742 секунды.

LIKE производительность быстрее. Если вы можете использовать его вместо REGEXP, сделайте это.