Indizes hinzufügen (db_index = True)

73

Ich lese ein Buch über den Codierungsstil in Django und eine Sache, die sie diskutieren, ist db_index=True. Seit ich Django benutze, habe ich diese Funktion nie mehr benutzt, weil ich nicht wirklich sicher bin, was sie tut.

Meine Frage ist also, wann man das Hinzufügen von Indizes in Betracht ziehen sollte.

Catherine
quelle

Antworten:

146

Dies ist nicht wirklich Django-spezifisch; mehr mit Datenbanken zu tun. Sie fügen Indizes für Spalten hinzu, wenn Sie die Suche in dieser Spalte beschleunigen möchten.

In der Regel wird nur der Primärschlüssel von der Datenbank indiziert. Dies bedeutet, dass Suchvorgänge mit dem Primärschlüssel optimiert werden.

Wenn Sie viele Suchvorgänge in einer sekundären Spalte durchführen, sollten Sie dieser Spalte einen Index hinzufügen, um die Arbeit zu beschleunigen.

Beachten Sie, dass diese wie die meisten Skalierungsprobleme nur gelten, wenn Sie eine statistisch große Anzahl von Zeilen haben (10.000 sind nicht groß).

Darüber hinaus müssen die Indizes jedes Mal aktualisiert werden, wenn Sie eine Einfügung vornehmen. Achten Sie also darauf, in welcher Spalte Sie Indizes hinzufügen.

Wie immer können Sie nur optimieren, was Sie messen können. Verwenden Sie daher die EXPLAINAnweisung und Ihre Datenbankprotokolle (insbesondere langsame Abfrageprotokolle), um herauszufinden, wo Indizes nützlich sein können.

Burhan Khalid
quelle
5
Dies kann (sehr) helfen github.com/django-debug-toolbar/…
maazza
1
Indizes können auch das Sortieren beschleunigen. Dieser Artikel befasst sich mit MS SQL Server, gilt jedoch auch für alle Datenbanken.
Nick