Ich benutze mptt in einem Modell, um ein Tagging-System zu verwalten (jedes Tag hat einen optionalen TreeForeignKey zu einem 'Eltern' -Tag)
Immer wenn ich ein Tag-Modell speichern muss, wird die folgende Abfrage außergewöhnlich langsam (mehr als 45 Sekunden) ausgeführt
%Vor%Ich sende den Inhalt von Artikeln über ein automatisiertes Tagging-System, das mehr als 20 Tags generieren kann. Offensichtlich wird das nicht fliegen:)
Ich habe db_index = False hinzugefügt, in der Hoffnung, die Schreibzeiten zu ändern (Lesevorgänge scheinen kein Problem zu sein), aber das Problem besteht weiterhin.
Hier ist das Modell in Frage:
%Vor%Und der Abfrageplan (wie von New Relic gemeldet):
%Vor%Abschließend die Rückverfolgung von einer solchen Abfrage:
%Vor%Irgendeine Idee, wie ich diese Modell spart, um schneller zu sein?
BEARBEITEN für weitere Informationen: Dies ist in Postgres mit der psycopg2-Engine 'ENGINE': 'django.db.backends.postgresql_psycopg2',
ZWEITE BEARBEITUNG: Wie gewünscht, habe ich die Abfrage mit EXPLAIN ANALYZE ausgeführt. Das Ergebnis ist wie folgt:
%Vor%django mptt verwendet das geschachtelte Mengenmodell
Wenn also Ihre Speichermethode den Einfügevorgang verursacht, muss django-mptt viele Daten neu berechnen. Es funktioniert einfach nicht an großen Tischen.
Sie müssen die Verwendung von django-mptt ablehnen und Ihr eigenes Datenbankschema erfinden.
Tags und Links django postgresql django-models django-mptt mptt