質問編集履歴

1

N+1問題の説明を追記

2020/12/25 01:20

投稿

no1knows
no1knows

スコア3365

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,33 @@
5
5
  APIモードで、N+1問題を発見、対処するには一般的にどのような手法がとられるのでしょうか?
6
6
 
7
7
  定番のBulletをみると、[Run in tests](https://github.com/flyerhzm/bullet#run-in-tests)があるので、こちらを利用する形なのでしょうか?
8
+
9
+
10
+
11
+ ---
12
+
13
+
14
+
15
+ N+1問題について説明不足でした。
16
+
17
+
18
+
19
+ > N+1 問題とは、OR マッパーを使用しているときに発生しがちな問題です。
20
+
21
+ >
22
+
23
+ > 何かの一覧画面を作成しているときに、
24
+
25
+ >
26
+
27
+ > ・一覧に表示するデータを取得するために SELECT を 1 回実行(N レコード返される)
28
+
29
+ > ・各データの関連データを取得するために SELECT を N 回実行
30
+
31
+ > ・データベースアクセス(SELECT)が合計 N+1 回も実行される(JOIN して 1 回の SQL で取得した方が効率的)
32
+
33
+ > というものです。
34
+
35
+
36
+
37
+ 参考:[Railsライブラリ紹介: N+1問題を検出する「bullet」](https://www.techscore.com/blog/2012/12/25/rails%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E7%B4%B9%E4%BB%8B-n1%E5%95%8F%E9%A1%8C%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B%E3%80%8Cbullet%E3%80%8D/)