-1

Ich muss durch ein Modell filtern, das ungefähr 24 Mil hat. Instanzen (Datensätze). Ich muss sie basierend auf einem Namen filtern, der von der URL Kwarg erhalten wird, habe ich etwas wie dieses: Model.objects.filter(field__icontains=self.kwargs['kwarg']).values() auf einer Ansicht.Langsame Datenbankoperation Django Filter

Dies ist absolut nicht effizient, da die Seite sehr langsam ist und viel CPU-Verarbeitung erfordert. Wie kann ich dieses Problem lösen?

Vielen Dank im Voraus für Antworten!

+0

Wenn Sie Postgres verwenden, schauen Sie auf https://docs.djangoproject.com/en/2.0/ref/contrib/postgres/search/ – dkarchmer

+0

Oder verwenden Sie eine Suchmaschine – dkarchmer

+0

Es ist langsam sogar mit der Postgresuche. Ich habe die elastische Suchmaschine mit Heuhaufen betrachtet. Aber ich weiß nicht, wie ich es in dieser Situation anwenden soll. – ShadowXsc

Antwort

0

Erstellen Sie einen Index für das Feld. Wie effektiv das sein wird, wird durch die Datenbank-Engine etwas variieren, aber es sollte helfen. Fügen Sie in der Modelldefinition fielddb_index=True hinzu. Sie können auch einen Blick auf PostgreSQL full text indexes werfen.

+0

Ich habe das schon gemacht, es hat die Performance verbessert, aber es ist immer noch sehr langsam. – ShadowXsc