2015-07-10 14 views
7

ich zwei Tabellen in meiner Modelle haben:Clustered-Index in django

1) Besitzer:

OwnerName 

2) Auto

OwnerKey 

CarName 

CarPrice 

Hier, während eine Zeile in Besitzer Tabelle erstellen, I fügen Sie auch die Autos für diesen Inhaber Autotisch hinzu. So werden alle Autos für einen bestimmten Besitzer nacheinander in der Car-Tabelle gespeichert. Nun, wenn ich fragen möchte, ob ich die Cluster-Indizierung verwenden soll oder nicht? Sobald die Autos für einen bestimmten Besitzer gespeichert sind, werden dann keine Autos für diesen Besitzer hinzugefügt, es wird auch kein Auto gelöscht, nur der Preis wird geändert. Was sollte ich für einen schnelleren Zugriff tun? Und wie implementiert man Cluster-Index über Django?

+1

Es erwähnt nicht jede Art von Cluster-Indizierung @madzohan –

+0

regulären Indizes gewohnt für Sie arbeiten? – miki725

+0

Clustering wird den Abruf beschleunigen. Habe ich recht? –

Antwort

1

Sie Frage nach Informationen fragt, die die SQL erfordert studieren, nicht nur den Code Django.

Wenn Sie nur tausend Eigentümer und Autos haben, die Dinge werden wahrscheinlich schnell genug sein. Wenn Sie eine Million Besitzer oder Autos haben, brauchen Sie Indizes, nicht unbedingt "gruppiert".

A "geclustert" -Taste in MySQL als PRIMARY KEY implementiert. Sie können nur einen pro Tabelle haben und seine Werte müssen eindeutig sein.

ich Django, so etwas wie dies eine PK zu erhalten:

column1 = models.IntegerField(primary_key = True) 

Bitte geben Sie das Tabellenschema Sie bereits haben. Das heißt, gehen Sie über Django hinaus und erhalten Sie SHOW CREATE TABLE. (Was Sie zur Verfügung gestellt haben, ist zu vage, daher meine Antwort zu vage.)

Referenzen:

Es gibt kein „geclustert“ Indizes außer den PRIMARY KEY. Ein sekundärer Schlüssel kann jedoch eine ähnliche Leistung haben wenn es ein "Deckungsindex" ist. Dieser Begriff bezieht sich auf einen Index, der alle Spalten enthält, die in der SELECT gefunden werden. Auch, die Spalten sind korrekt sortiert.

Lassen Sie uns Ihre SELECT Aussagen, um besser sehen zu beurteilen, was notwendig ist.

+0

Aber ich benutze QuerySets API hier, nicht die rohen Abfragen –