Wenn keiner der früheren Vorschläge funktioniert, würde ich vorschlagen, Django aus der Gleichung zu nehmen und diese rohe SQL gegen Ihre Datenbank laufen zu lassen. Ich rate um Ihre Tabellennamen, also müssen Sie möglicherweise entsprechend anpassen:
Ist das langsam? Wenn ja, lassen Sie Ihr RDBMS (MySQL?) Den Abfrageplan für Sie erklären. Dies wird Ihnen sagen, ob es vollständige Tabellen-Scans macht, die Sie offensichtlich nicht mit einer so großen Tabelle wollen. Sie können auch Ihre Frage bearbeiten und das Schema für die Tabelle valor
für uns einfügen.
Auch können Sie die SQL sehen, dass Django ist, indem Sie diese zu erzeugen (die Abfrage-Set von Peter Rowell versehen mit):
qs = Valor.objects.filter(robot=r).order_by('-id')[0]
print qs.query
Stellen Sie sicher, dass SQL auf die ‚raw‘ Abfrage ähnlich ist ich gepostet über. Sie können auch Ihren RDBMS diesen Abfrageplan für Sie erläutern lassen.
Haben Sie eine sehr reich verzierte Struktur von ForeignKey-, OneToOneField- oder ManyToManyField-Beziehungen? –
fwiw, das ist langsam, weil Sie alles in der 'valor' Tabelle auswählen und eine Django Modellinstanz für jeden Eintrag instanziieren, wenn Sie sie in eine Liste konvertieren (über' .reverse') und nur das erste Element in der Liste. – Carson