Ich habe einen Blog. Auf meiner Indexseite ziehe ich alle Blogposts ein. Für jeden Blogeintrag zähle ich die Anzahl der Kommentare zu diesem Beitrag. Dies führt zu einem N + 1 Problem. Meine Anfragen wie folgt aussehen:Rails SQL COUNT N + 1 Ineffizienz
SELECT "blog_posts".* FROM "blog_posts" WHERE ("blog_posts"."published" = 't') ORDER BY published_at DESC
SELECT "users".* FROM "users" WHERE ("users"."id" IN (1, 2, 3))
SELECT COUNT(*) FROM "blog_comments" WHERE ("blog_comments".blog_post_id = 10)
SELECT COUNT(*) FROM "blog_comments" WHERE ("blog_comments".blog_post_id = 9)
SELECT COUNT(*) FROM "blog_comments" WHERE ("blog_comments".blog_post_id = 8)
SELECT COUNT(*) FROM "blog_comments" WHERE ("blog_comments".blog_post_id = 2)
SELECT COUNT(*) FROM "blog_comments" WHERE ("blog_comments".blog_post_id = 7)
Gibt es eine Möglichkeit in Rails die COUNT in der gleichen Art, wie ich die Benutzer (SQL Linie 2) sind zu enthalten?
+1 Das ist ordentlich! –
Genau das habe ich gesucht! Vielen Dank! – Mike