我在一個語句中使用了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