Put this in settings.py
to see executed SQL queries
LOGGING = {
'version': 1,
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
}
},
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console'],
}
}
}
For a nested query like this
query MyQuery {
colors {
name
fruits {
name
id
}
}
}
you will get three SQL statements (no optimization)
(0.000) SELECT "app_color"."id", "app_color"."name" FROM "app_color"; args=(); alias=default
(0.000) SELECT "app_fruit"."id", "app_fruit"."name", "app_fruit"."color_id" FROM "app_fruit" WHERE "app_fruit"."color_id" = 1; args=(1,); alias=default
(0.000) SELECT "app_fruit"."id", "app_fruit"."name", "app_fruit"."color_id" FROM "app_fruit" WHERE "app_fruit"."color_id" = 2; args=(2,); alias=default
With the Strawberry Django Optimizer you will get only one statement containing a JOIN statement.
(0.000) SELECT "app_fruit"."id", "app_fruit"."name", "app_fruit"."color_id", "app_color"."id", "app_color"."name"
FROM "app_fruit"
LEFT OUTER JOIN "app_color"
ON ("app_fruit"."color_id" = "app_color"."id"); args=(); alias=default