おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

Today, I may go to bed after midnight...

 find_by_sqlを使用して、リンク元の集計処理をするようにしてみました。

  def self.get_referer(id = nil)  
    if id  
      condition = "diary_id = #{id}"  
    else  
      condition = "diary_id IS NULL"  
    end  
 
    self.find_by_sql(<<-SQL)  
      select  
        url  
      , COUNT(*) as 'count'  
      from  
        counters  
      where  
        #{condition}  
      group by  
        url  
      order by  
        count DESC  
      ;  
    SQL  
  end  

 すげー、超シンプル。今まではソートしたりなんだりいろいろやっていたのが、Rubyでのコードは一切不要になりました。たったこの一行のSQLだけで。SQL最高。なにより速いし。もっと勉強していろいろやってみよう。楽しくなってきました。method_missingを使うfind_by_*よりも、find_by_sqlを使うほうが全然速いんだろうなあ。