sql >> Database teknologi >  >> RDS >> Mysql

Django admin MySQL langsom INNER JOIN

Jeg har implementeret en rettelse til INNER JOIN til Django ORM, den vil bruge STRAIGHT_JOIN i tilfælde af bestilling med INNER JOINs. Jeg talte med Django core-devs, og vi besluttede at gøre dette som en separat backend indtil videre. Så du kan tjekke det ud her:https://pypi.python.org/pypi /django-mysql-fix

Der er dog en anden løsning. Brug et uddrag fra James' svar, men erstat select_related med:

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

Det vil annullere INNER JOIN og bruge 4 separate forespørgsler:1 til at hente biler og 3 andre med car_id IN (...).

OPDATERING: Jeg har fundet en løsning mere. Når du har angivet null=True i dit ForeignKey-felt, vil Django bruge LEFT OUTER JOINs i stedet for INNER JOIN. LEFT OUTER JOIN fungerer uden problemer med ydeevnen i dette tilfælde, men du kan støde på andre problemer, som jeg ikke er klar over endnu.



  1. SQL ORDER BY ved hjælp af forberedte sætninger

  2. Sådan får du Dato fra et resultatsæt

  3. MYSQL, meget langsom rækkefølge

  4. hvordan man emulerer insert ignore og på duplikatnøgleopdatering (sql merge) med postgresql?