find_by_sqlを使ったactiverecordのスピードアップ
activerecordを使った場合、モデルの情報しか取得出来ません。
例えば Book.find_by_sql("select books.*,authors,* from... left join ...")としてもbookの情報しか取得出来ないので、以下のようにしていました
activerecordを使った場合、モデルの情報しか取得出来ません。
例えば Book.find_by_sql("select books.*,authors,* from... left join ...")としてもbookの情報しか取得出来ないので、以下のようにしていました
strSQL = "select books.* from books left join authors on authors.id = books.author_id;" strSQL2 = "select authors.* from books left join authors on authors.id = books.author_id;" @books = Book.find_by_sql(strSQL) @authors = Author.find_by_sql(strSQL2)これで、目的の情報は取得出来るのですが、時間が倍かかります。 Book.includes(:author).find_by_sql()としても読み込まれないので困っていました。 今日ふと以下のように変更すると、二回目のfind_by_sqlはキャッシュから取得していました。 これはいいかもしれない。これで取得時間が半分ぐらいになりました。(良かった。。。)
strSQL = "select books.*,authors.* from books left join authors on authors.id = books.author_id;" @books = Book.find_by_sql(strSQL) @authors = Author.find_by_sql(strSQL)
0 件のコメント:
コメントを投稿