19. 利点:SQLを書かなくてもいい
SELECT * FROM articles WHERE id = 1;
SELECT * FROM comments WHERE article_id = 1;
のようなSQLを書かなくてもよい。結構複雑なところまで網羅で
きるが、拡張gemを使うとさらに便利に。
article = Article.find 1
article.comments.each do |comment|
p comment.title
end
24. N+1問題とは?
article = Article.find 1
article.comments.each do |comment|
p comment.user.name
end
SELECT * FROM articles WHERE id = 1;
SELECT * FROM comments WHERE article_id = 1;
SELECT * FROM users WHERE user_id = 1;
コメントしたユーザー名の取得N回
コメント全件取得1回
のDBアクセスが発生する。
35. N+1問題とは?
article = Article.find 1
article.comments.each do |comment|
p comment.user.name
end
SELECT * FROM articles WHERE id = 1;
SELECT * FROM comments WHERE article_id = 1;
SELECT * FROM users WHERE user_id = 1;
コメントしたユーザー名の取得N回
コメント全件取得1回
のDBアクセスが発生する。