Saya telah menerapkan perbaikan untuk INNER JOIN untuk Django ORM, ini akan menggunakan STRAIGHT_JOIN jika memesan dengan INNER JOIN. Saya berbicara dengan pengembang inti Django dan kami memutuskan untuk melakukan ini sebagai backend terpisah untuk saat ini. Jadi Anda dapat memeriksanya di sini:https://pypi.python.org/pypi /django-mysql-fix
Namun, ada satu solusi lain. Gunakan cuplikan dari jawaban James, tetapi ganti select_related dengan:
qs = qs.select_related('').prefetch_related('wheel', 'dealer', 'category')
Ini akan membatalkan INNER JOIN dan menggunakan 4 kueri terpisah:1 untuk mengambil mobil dan 3 lainnya dengan car_id
DI (...).
PERBARUI: Saya telah menemukan satu solusi lagi. Setelah Anda menentukan null=True di bidang ForeignKey Anda, Django akan menggunakan LEFT OUTER JOIN daripada INNER JOIN. LEFT OUTER JOIN berfungsi tanpa masalah kinerja dalam kasus ini, tetapi Anda mungkin menghadapi masalah lain yang belum saya ketahui.