哪个更好? mysql的LIKE还是REGEXP?

时间:2011-05-27 06:29:47

标签: mysql ruby-on-rails sql-like

我在一个语句中使用了一个LIKE而不是LIKE的named_scope。与使用REGEXP相比,这在执行方面更快吗?

named_scope :order_search, :order => "name LIKE '%urgent%' AND name NOT LIKE '%not urgent%' DESC, created_at DESC"

3 个答案:

答案 0 :(得分:5)

这是几毫秒的差异,不可察觉。除非你处理的是极高的流量,否则无关紧要。

如果您的方法遇到性能问题,可能是因为您的表有大量行。瓶颈不是那么(并且MySQL也支持REGEXP)但你的表结构。

无论如何,您应该阅读MySQL IndexesMySQL Fulltext Search

答案 1 :(得分:2)

据我所知,在这种情况下,MySQL的LIKE将使用Boyer-Moore,因此LIKE可能会略有优势。

与使用将整个表达式存储在is_urgent字段中的触发器相比,它可以忽略不计。然后,您可以在(is_urgent, created_at)上添加索引。

答案 2 :(得分:1)

您的查询不是大多数查询,它无法使用索引 所以喜欢和正则表达式相同