graphql-python / graphql-python/swapi-graphene
Querying for allSpecies and homeworld executes 38 SQL queries
- Ngôn ngữ chính
- Python
- Star
- 174
- Fork
- 33
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
This query:
{
allSpecies {
edges {
node {
name
homeworld {
name
gravity
}
}
}
}
}
Executes 38 sql queries, looking something like this:
(0.001) SELECT COUNT(*) AS "__count" FROM "starwars_species"; args=()
(0.000) SELECT "starwars_species"."id", "starwars_species"."created",
"starwars_species"."edited", "starwars_species"."name",
"starwars_species"."classification", "starwars_species"."designation",
"starwars_species"."average_height", "starwars_species"."skin_colors",
"starwars_species"."hair_colors", "starwars_species"."eye_colors",
"starwars_species"."average_lifespan", "starwars_species"."homeworld_id",
"starwars_species"."language" FROM "starwars_species" LIMIT 37; args=()
(0.000) SELECT "starwars_planet"."id", "starwars_planet"."created",
"starwars_planet"."edited", "starwars_planet"."name",
"starwars_planet"."rotation_period", "starwars_planet"."orbital_period",
"starwars_planet"."diameter", "starwars_planet"."climate",
"starwars_planet"."gravity", "starwars_planet"."terrain",
"starwars_planet"."surface_water", "starwars_planet"."population" FROM
"starwars_planet" WHERE "starwars_planet"."id" = 9; args=(9,)
(0.000) SELECT "starwars_planet"."id", "starwars_planet"."created",
"starwars_planet"."edited", "starwars_planet"."name",
"starwars_planet"."rotation_period", "starwars_planet"."orbital_period",
"starwars_planet"."diameter", "starwars_planet"."climate",
"starwars_planet"."gravity", "starwars_planet"."terrain",
"starwars_planet"."surface_water", "starwars_planet"."population" FROM
"starwars_planet" WHERE "starwars_planet"."id" = 14; args=(14,)
... repeat another 36 times
Full list here: https://gist.github.com/simonw/762a98de85a2f113d1d7ec6026f73ee4
Is it possible to detect this case and then use select_related() or prefetch_related() here to join against the relevant table and get everything done in just one or two queries?
If so, an example showing how to do that would be a fantastic illustration of a slightly more complex use-case for graphene-django (I tried myself and couldn't figure out how to do it).
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Đánh giá
Issue này chưa được đánh giá.