graphql-python/graphene-django
GitHub ã§èŠã`select_related` and `prefetch_related`
Open
#57 opened on 2016幎11æ13æ¥
help wantedwontfixð documentation
Repository metrics
- Stars
- Â (4,173 stars)
- PR merge metrics
-  (å¹³åããŒãž 12d 13h) (30d ã§ 1 merged PR)
説æ
When I inspected the actual SQL queries being run against DB, I found that for foreignkey and manytomany relationships, we have the n+1 problem.
For example, suppose there are 5 teams, each with 11 members, this query:
query {
teams {
edges {
node {
members {
edges {
node {
name
}
}
}
}
}
}
}
will result in 1 query for selecting teams, and 5 more queries for selecting members of each team. 6 queries in total.
Normally, we would do a query like this Team.objects.all().prefetch_related('members') to reduce to 2 queries.
I think it would be extremely beneficial if DjangoObjectType can detect special fields:
- ForeignField
- OneToOneField
- OneToManyField
- ManyToManyField
and apply appropriate
prefetch_relatedand/orselect_relatedwhen such fields are present in graph queries.