タグ

RailsとActiveRecordに関するtkmkg8mのブックマーク (4)

  • ActiveRecordのincludes, preload, eager_load の個人的な使い分け - Money Forward Developers Blog

    マネーフォワード福岡拠点の責任者をしております 黒田 です。 普段はRailsエンジニアとして マネーフォワードクラウド経費 の開発を担当しています。 普段Railsを使って開発されている方であれば、N+1問題に悩まされた経験は大抵の方がおありではないでしょうか。 N+1なクエリの発見には bullet を使うと良いですね。 bulletを使うとN+1なクエリを発見してくれ、さらに、具体的にここにincludesを追加しなさいと指摘までしてくれるので大変助かります。 しかし、先日bulletに言われるがままにincludesを付けてみたところ、N+1は解消したものの、スロークエリに見舞われることとなったので、includes,preload, eager_loadについて改めて調べてまとめてみることにしました。 (ソース調査したRailsのバージョンは 6.0.0.beta3 です。) i

    ActiveRecordのincludes, preload, eager_load の個人的な使い分け - Money Forward Developers Blog
    tkmkg8m
    tkmkg8m 2019/04/02
    includes はクエリが状況によって変わってコントロールしづらいのわかる。よしなにやってくれるのって問題起きてないときは便利でいいんだけど、何か問題起きたときにやりづらいし問題起きそうな気配も隠しちゃう。
  • How to create a maintainable and scalable search for your Ruby on...

    How to create a maintainable and scalable search for your Ruby on...
    tkmkg8m
    tkmkg8m 2018/10/18
    Searchkick gem
  • ActiveRecordを試すときに便利なやつ - r7kamura - Medium

    手元で ActiveRecord を試したいときに、いちいちデータベースを用意したり、再現性のあるコード片に整えたりするのは、結構な手間に感じてしまうかもしれません。この記事では、そういったケースで利用できる知識を幾つかまとめておこうと思います。 以下は今回題材に使うコード例で、これを上から順に説明していきます。 ActiveRecord で .count の挙動を試す例bundler/inlinebundler/inlineBundler 1.10 から追加された機能です。これを利用すると、Gemfile を独立したファイルとして用意することなく、スクリプトの中にその定義を埋め込めるようになります。 続くスクリプトがどのバージョンの Gem で動かせるのかということを明示でき、必要であればライブラリを実行時に自動的にインストールし、依存関係を調べて $LOAD_PATH を調整し、

    tkmkg8m
    tkmkg8m 2018/04/15
    bundler/inlineはインストール先を選べれば文句ないんだよねぇ
  • Railsでパフォーマンスを低下させないために気をつけること - Qiita

    概要 Railsを開発する上でパフォーマンスを低下させないためのTipsをメモ Tips 実行時間の大きい処理はJobで非同期実行する リクエスト内で複数な処理を実行してしまうと、レスポンスが遅くなりユーザビリティの低下につながります リクエスト内で実行する必要がないものは、ActiveJob等で非同期に実効するか、バッチ処理で定期的に処理するように することでユーザビリティの向上が図れます 条件式判定よりもSQLで絞る 取得してきたデータを1件ずつ条件反映して処理をするよりは、 取得するデータそのものをSQLで絞る方がはるかにパフォーマンスが良くなります ループの中で毎回条件式で反映してしまうと、ループの中で毎回SQLが走ってしまうこともあるので、 パフォーマンスが要求される場合はSQLで絞るか、SQLで絞れる設計にすることをおすすめします Array よりも ActiveRecord:

    Railsでパフォーマンスを低下させないために気をつけること - Qiita
    tkmkg8m
    tkmkg8m 2018/04/08
    メモリのために使用済み変数に明示的にnilを入れるのはたとえ効果があってもやりたくないなぁ。人間がやることじゃないというか。
  • 1