Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Administrator Django MySQL powolny INNER JOIN

Wdrożyłem poprawkę dla INNER JOIN dla Django ORM, będzie używał STRAIGHT_JOIN w przypadku zamawiania z INNER JOIN. Rozmawiałem z głównymi programistami Django i postanowiliśmy na razie zrobić to jako oddzielny backend. Możesz to sprawdzić tutaj:https://pypi.python.org/pypi /django-mysql-fix

Istnieje jednak jeszcze jedno obejście. Użyj fragmentu odpowiedzi Jakuba, ale zamień select_related na:

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

Anuluje INNER JOIN i użyje 4 oddzielnych zapytań:1 do pobrania samochodów i 3 innych z car_id W (...).

AKTUALIZACJA: Znalazłem jeszcze jedno obejście. Po określeniu null=True w polu ForeignKey, Django użyje LEFT OUTER JOIN zamiast INNER JOIN. LEFT OUTER JOIN działa w tym przypadku bez problemów z wydajnością, ale możesz napotkać inne problemy, o których jeszcze nie wiem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sequelize Query, aby znaleźć wszystkie rekordy mieszczące się w zakresie dat

  2. Znajomy znajomego w PHP/MySQL?

  3. Jak zaktualizować kolumnę o wartości null

  4. Struts + Hibernate:@SessionTarget nie działa

  5. Prawidłowy sposób na utrzymanie aktywnych połączeń w puli (lub przerwanie ich i uzyskanie nowych) podczas dłuższej nieaktywności dla MySQL, aplikacji Grails 2