LIKE и REGEXP в MYSQL

  • Автор темы Foshvad
  • Дата начала

Foshvad

Guest
LIKE и REGEXP в MYSQL

Вопросец.
Можно ли в общем оценить соотношение скоростей обработки MYSQL’ем запросов с REGEXP и с LIKE?

Например, что быстрее будет выполнятся:

SELECT somefield from sometable WHERE somefield REGEXP ‘*abc*’

и

SELECT somefield from sometable WHERE somefield LIKE ‘%abc%’


обработка порядка 2000-10000 строк.
somefield имеет тип VARCHAR(255), индекс создан

Кстати, кто-нить знает, REGEXP индекс использует?
 

.des.

Поставил пиво кому надо ;-)
а попробовать религия не позволяет?

НИКОГДА не пользуйся регекспами если они тебе не нужны!

Использовать надо LIKE или LOCATE


Что касается..
Кстати, кто-нить знает, REGEXP индекс использует?
А про EXPLAIN ты слышал?
PHP:
mysql> explain select note from dgtest WHERE note regexp '.*void.*';
+--------+-------+---------------+------+---------+------+-------+-------------------------+
| table  | type  | possible_keys | key  | key_len | ref  | rows  | Extra                   |
+--------+-------+---------------+------+---------+------+-------+-------------------------+
| dgtest | index | NULL          | note |     250 | NULL | 72180 | where used; Using index |
+--------+-------+---------------+------+---------+------+-------+-------------------------+
То есть испольуется индекс. НО!
запрос выполняется 29 секунд!

тогда как
PHP:
mysql> explain select note from dgtest WHERE note like "%void%";
+--------+-------+---------------+------+---------+------+-------+-------------------------+
| table  | type  | possible_keys | key  | key_len | ref  | rows  | Extra                   |
+--------+-------+---------------+------+---------+------+-------+-------------------------+
| dgtest | index | NULL          | note |     250 | NULL | 72180 | where used; Using index |
+--------+-------+---------------+------+---------+------+-------+-------------------------+
Выполняется 0,9-1 секунду.. в среднем.
Еще комментарии?
 
Сверху