見習いエンジニア(仮)の学び場

未経験からエンジニア転職を目指す男が、プログラミング学習で学んだことを分かりやすくアウトプットするためのブログです。

「N+1問題」って何??

今回は、Webアプリケーションの時に起こりがちな「N+1問題」の解説をしていきます。

 

 

N+1問題とは、アプリケーションのデータの量分処理が実行され、アプリのパフォーマンス低下につながる問題のことです。

 

例えば、Twitterでは、ツイート一つ一つに投稿者のアイコンや名前が表示されていますよね。あれは、「ツイート」と「投稿者」の情報を、アプリのデータベース上で関連付けて表示させているのですが、その時ある問題が起こります。

 

それが、一回一回ツイートと投稿者を関連付ける作業が必要となることです。

ツイートを表示させるごとに毎回その作業をしていると、アプリの動作も当然重くなっていきます。

このように、データの量分だけ膨大な処理が実行され、アプリのパフォーマンスが下がる問題を、N+1問題と言います。

 

 

この問題の対処法は、「includesメソッド」を使用することです。

includesメソッドは、一回のアクセスで関連づけられたデータをまとめて取得してくれるため、処理の回数を減らし、N+1問題を解消してくれます。

 

 

大規模なアプリを作るほど、N+1問題は対処が必要になるので覚えておきましょう!