sql >> Databáze >  >> RDS >> Mysql

Django admin MySQL pomalý INNER JOIN

Implementoval jsem opravu pro INNER JOIN pro Django ORM, bude používat STRAIGHT_JOIN v případě objednávky s INNER JOINy. Mluvil jsem s Django core-devs a rozhodli jsme se to prozatím udělat jako samostatný backend. Takže se na to můžete podívat zde:https://pypi.python.org/pypi /django-mysql-fix

Existuje však ještě jedno řešení. Použijte úryvek z Jamesovy odpovědi, ale nahraďte select_related řetězcem:

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

Zruší INNER JOIN a použije 4 samostatné dotazy:1 pro načtení aut a 3 další s car_id IN (...).

AKTUALIZACE: Našel jsem ještě jedno řešení. Jakmile zadáte null=True v poli ForeignKey, Django použije LEFT OUTER JOINs namísto INNER JOIN. LEFT OUTER JOIN v tomto případě funguje bez problémů s výkonem, ale můžete čelit jiným problémům, o kterých zatím nevím.



  1. Vyhledejte hodnotu ve sloupci hodnota, která ukládá hodnoty oddělené čárkami

  2. pravé spojení versus levé spojení

  3. Jak získat nejnovější záznam v každé skupině pomocí GROUP BY?

  4. jQuery Autocomplete Mysql PHP