ActiveRecord中使用的find
首先不要用find helper,也就是那些find_by_colName,效率差
第二,像直接写SQL一样做tunning,不要简单的find(:all),仔细看最后生成的SQL,要额外关注:joins, :include, :order, :select
利用:join, :include可以完成连接,从效率上看很有必要,虽然用起来稍微麻烦点。完全以来与ActiveRecord生成的object relationship的话代码写起来很爽,但是会多出很多的SQL.
:order很简单,但是仔细看系统会根据model里面的has_, belong_关系为你多加上一个order by
不用:select就相当于select *,当你的table中有大量文本的时候这个很恐怖
此外也不要过多的依赖find_by_sql, 这样会很大程度上破坏ActiveRecord完成的mapping工作, 尤其是在项目前期。这样的sql tunning还是留到后面的重构中吧,起码等到这个需要确定要保留下来的时候:)
Tags: activerecord, find, rails, sql