質問編集履歴
1
N+1問題の説明を追記
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/)
|