sql >> Databasteknik >  >> RDS >> Mysql

Django admin MySQL långsam INNER JOIN

Jag har implementerat en fix för INNER JOIN för Django ORM, den kommer att använda STRAIGHT_JOIN vid beställning med INNER JOINs. Jag pratade med Django core-devs och vi bestämde oss för att göra detta som en separat backend tills vidare. Så du kan kolla in det här:https://pypi.python.org/pypi /django-mysql-fix

Det finns dock en annan lösning. Använd ett utdrag från James svar, men ersätt select_related med:

qs = qs.select_related('').prefetch_related('wheel', 'dealer', 'category')

Det kommer att avbryta INNER JOIN och använda 4 separata frågor:1 för att hämta bilar och 3 andra med car_id IN (...).

UPPDATERING: Jag har hittat ytterligare en lösning. När du anger null=True i ditt ForeignKey-fält kommer Django att använda LEFT OUTER JOINs istället för INNER JOIN. LEFT OUTER JOIN fungerar utan prestandaproblem i det här fallet, men du kan stöta på andra problem som jag inte är medveten om än.



  1. Det gick inte att uppgradera SonarQube från 4.5.2 till 5.0

  2. Mysqli-fråga med en SET-variabelsats (dvs flera frågor)

  3. Vad är nytt i PostgreSQL 12

  4. PDF skapad med FPDF och hur man sparar och hämtar pdf:en