Django-Modell Felder Indizieren
Ich weiß nur, dass eine Indizierung ist hilfreich, und es fragt schneller.
Was ist der Unterschied zwischen folgenden beiden?
1. class Meta:
indexes = [
models.Index(fields=['last_name', 'first_name',]),
models.Index(fields=['-date_of_birth',]),
]
2. class Meta:
indexes = [
models.Index(fields=['first_name',]),
models.Index(fields=['last_name',]),
models.Index(fields=['-date_of_birth',]),
]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im ersten Beispiel wird ein einzelner index auf die
last_name
undfirst_name
Feld.Wird es nützlich sein, wenn Sie suchen, auf den Nachnamen und den Vornamen, oder den Nachnamen von selbst (weil
last_name
ist das erste Feld im index).Allerdings wird es nicht sinnvoll sein, für die Suche nach der Vorname von selbst (weil
first_name
ist nicht das erste Feld im index).Im zweiten Beispiel wird ein index für die
first_name
Bereich und einen separaten index für dielast_name
Feld.Wird es nützlich sein, wenn Sie suchen anhand von Vorname oder Nachname in Ihrem code
Django-Modell-Index wurde eingeführt, Django 1.11
was ist Modell.Indizes:
Standardmäßig werden Indizes erstellt, mit einer aufsteigender Reihenfolge für jede Spalte. Definieren Sie einen index mit absteigender Reihenfolge für eine Spalte, fügen Sie einen Bindestrich vor das Feld name.
Für Ihre Anfrage,
models.Index(fields=['last_name', 'first_name','-date_of_birth',]),
schaffen würde, SQL mit(last_name, first_name, date_of_birth DESC).
Können nun zu Ihrer Frage,
fragte Sie Unterschied zwischen 2 Abfragen,
beide nehmen
models.Index(fields=['-date_of_birth',]),
weil mindestens ein überschreiben der Variablen zugewiesen. Ihre Frage zumindest ist
dateofbirth
so wird es überschreiben die oben genannten zwei Zeilen.so als pro-Dokumentation vorzuziehen ist,
da die Indizierung Feld sollte im "single list" .. also django vorbereiten von SQL-Indizierung aus der Liste der Felder...