This issue is a (choose one):
Checklist before submitting:
Bug reports:
This is not a feature bug, but a potential performance issue.
It's very common to eager load data in JR. But if we keep includes values when plucking for linkage data, it can make the query unnecessarily expensive.
Let's use Post model for example:
If we directly pluck all posts' created_at column, the query would be very simple
SELECT "posts"."created_at" FROM "posts"
But if we keep includes values in the previous relation object, like
Post.includes(:author).pluck(:created_at)
It generates unnecessarily complicated query
SELECT "posts"."created_at" FROM "posts" LEFT OUTER JOIN "people" ON "people"."id" = "posts"."author_id"
This is how we pluck polymorphic to_many linkage
assoc = source.public_send("records_for_#{relationship.name}", options)
......
assoc.pluck(:type, :id)
And we do apply includes in records_for_xxxx method
define_on_resource associated_records_method_name do |options = {}|
.....
records = resource_klass.apply_includes(records, options)
This means our pluck query will be very expensive due to the previous includes
This issue is a (choose one):
Checklist before submitting:
Bug reports:
This is not a feature bug, but a potential performance issue.
It's very common to eager load data in JR. But if we keep includes values when plucking for linkage data, it can make the query unnecessarily expensive.
Let's use Post model for example:
If we directly pluck all posts'
created_atcolumn, the query would be very simpleBut if we keep includes values in the previous relation object, like
It generates unnecessarily complicated query
This is how we pluck polymorphic to_many linkage
And we do apply includes in
records_for_xxxxmethodThis means our
pluckquery will be very expensive due to the previous includes