sql >> Database >  >> RDS >> Mysql

Django admin MySQL traag INNERLIJKE JOIN

Ik heb een oplossing voor INNER JOIN voor Django ORM geïmplementeerd, het zal STRAIGHT_JOIN gebruiken in het geval van bestellen met INNER JOINs. Ik sprak met Django core-devs en we besloten dit voorlopig als een aparte backend te doen. Dus je kunt het hier bekijken:https://pypi.python.org/pypi /django-mysql-fix

Er is echter nog een andere oplossing. Gebruik een fragment uit het antwoord van James, maar vervang select_related door:

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

Het annuleert INNER JOIN en gebruikt 4 afzonderlijke zoekopdrachten:1 om auto's op te halen en 3 andere met car_id IN (...).

UPDATE: Ik heb nog een oplossing gevonden. Zodra u null=True opgeeft in uw ForeignKey-veld, gebruikt Django LEFT OUTER JOINs in plaats van INNER JOIN. LEFT OUTER JOIN werkt in dit geval zonder prestatieproblemen, maar u kunt andere problemen tegenkomen waarvan ik me nog niet bewust ben.



  1. Kunnen er meerdere primaire sleutels op een enkele tafel bestaan?

  2. Getallen opmaken met een komma in SQLite

  3. Controleer de status van alle database-e-mailberichten in SQL Server (T-SQL)

  4. De ACID-eigenschappen van afschriften en transacties