Cómo usar Django Mysql Join para aumentar el rendimiento

El uso de un ORM no requiere que abandones SQL por completo.

En cualquier interfaz ORM, hay formas de escribir una consulta SQL directamente.

Aquí hay documentación sobre cómo hacerlo en Django: Realización de consultas SQL sin formato. ¡Esto está en la documentación oficial de Django! Es totalmente legítimo y soportado hacer esto.

Dice en parte:

Cuando las API de consulta de modelo no llegan lo suficientemente lejos, puede recurrir a escribir SQL sin formato. Django le ofrece dos formas de realizar consultas SQL sin formato: puede usar Manager.raw () para realizar consultas sin formato y devolver instancias de modelos, o puede evitar la capa del modelo por completo y ejecutar SQL personalizado directamente.

Esa página continúa y muestra ejemplos.

Los ORM son para hacerlo más productivo en la codificación de consultas simples y repetitivas. Pero SQL es poderoso, y las consultas pueden ser más sofisticadas que la simple API modelo ORM.

Cuando tenga una consulta SQL más compleja que no sea conveniente o directa en la API del modelo ORM, continúe y use SQL.

Configurar Django para usar MySQL

9.3 Conector / Python Django Backend

Aquí hay algunos enlaces que pueden ayudar.

¿Has intentado comprobar cuántas consultas estás creando realmente? Es un poco difícil saberlo sin sus modelos reales, pero creo que está haciendo cientos de consultas secundarias porque no está utilizando select_related / prefetch_related.
Consulte el documento de Django sobre ellos y quizás instale la barra de herramientas de depuración de django o registre las consultas para que pueda ver cuántas está haciendo realmente.