我在一个语句中使用了LIKE和NOT LIKE这个named_scope。与使用REGEXP相比,执行速度更快吗?哪个更好? MySQL的LIKE或REGEXP?
named_scope :order_search, :order => "name LIKE '%urgent%' AND name NOT LIKE '%not urgent%' DESC, created_at DESC"
我在一个语句中使用了LIKE和NOT LIKE这个named_scope。与使用REGEXP相比,执行速度更快吗?哪个更好? MySQL的LIKE或REGEXP?
named_scope :order_search, :order => "name LIKE '%urgent%' AND name NOT LIKE '%not urgent%' DESC, created_at DESC"
这是毫秒差异,不可忽视。除非你处理的流量极高,否则无关紧要。
如果您的方法遇到性能问题,很可能是因为您的表格有大量的行。瓶颈不是那么LIKE(和MySQL也支持REGEXP),但你的表结构。
在任何情况下,您应该阅读MySQL Indexes和MySQL Fulltext Search。
查询是不是最左边的查询,它不能使用索引 所以像和正则表达式是相同的
更好地利用'RLIKE'或'REGEXP' – diEcho 2011-05-27 06:37:03