Wie lege ich maximale Ergebnisse für eine Filterabfrage in Django fest?

7

Ich möchte die ersten 500 Ergebnisse aus einer großen Datenbank abrufen, die einer bestimmten Filterabfrage entsprechen.

Im Moment verwende ich die folgende (furchtbar ineffiziente) Methode ..

%Vor%

Aber ich denke, diese Abfrage lädt die gesamte Datenbank im Speicher und schneidet dann die Ergebnisse ab. Es ist furchtbar langsam.

Gibt es einen eleganteren Weg, dies zu tun? Danke!

    
infiniteloop 19.02.2011, 21:38
quelle

1 Antwort

23

So geht es.

Das generierte SQL verwendet LIMIT , so dass es nicht die gesamte Datenbank in den Speicher lädt und Python-Slice ist.

Beachten Sie, dass Sie sehen können, was SQL django schreibt, indem Sie django.db.connection.queries verwenden. Ссылка

Aber ein weniger bekannter Trick besteht darin, eine queryset.query oder sql = queryset.query.__str__()

zu drucken %Vor%     
Yuji 'Tomita' Tomita 19.02.2011, 21:45
quelle

Tags und Links