2015-07-10 6 views
7

Ho due tabelle nei miei modelli:indice cluster in Django

1) Proprietario:

OwnerName 

2) Auto

OwnerKey 

CarName 

CarPrice 

Qui durante la creazione di una riga nella tabella di proprietario, mi aggiungi anche le auto per quel tavolo auto proprietario. Quindi tutte le macchine per un determinato proprietario sono memorizzate in modo sequenziale nella tabella Car. Ora, se voglio chiedere se dovrei usare l'indicizzazione del cluster o no? Una volta salvate le auto per un determinato proprietario, non vengono aggiunte auto per quel proprietario, né viene cancellata alcuna vettura, ma solo il prezzo viene cambiato. Cosa devo fare per un accesso più veloce? E come implementare l'indice cluster tramite django?

+1

Non menziona alcun tipo di indicizzazione di cluster @madzohan –

+0

indici regolari non funzionano per voi? – miki725

+0

Il clustering velocizza il recupero. Ho ragione? –

risposta

1

La domanda è chiedere informazioni che richiedono lo studio dell'SQL, non solo del codice Django.

Se hai solo un migliaio di proprietari e auto, le cose saranno probabilmente abbastanza veloci. Se hai un milione di proprietari o auto, hai bisogno di indici, non necessariamente "raggruppati".

Una chiave "cluster" è implementata in MySQL come PRIMARY KEY. Puoi avere solo uno per tabella e i suoi valori devono essere unici.

I Django, fare qualcosa di simile per ottenere un PK:

column1 = models.IntegerField(primary_key = True) 

Si prega di fornire lo schema della tabella che già avete. Cioè, vai oltre Django e ottieni SHOW CREATE TABLE. (Quello che hai fornito è troppo vago; da qui la mia risposta è troppo vago.)

Riferimenti:

Non ci sono indici "in cluster" diversi da PRIMARY KEY. Tuttavia, una chiave secondaria può avere prestazioni simili se è un "indice di copertura". Questo termine si riferisce a un indice che contiene tutte le colonne che si trovano nello SELECT. Anche, le colonne sono ordinate correttamente.

Vediamo le vostre dichiarazioni SELECT per giudicare meglio ciò che è necessario.

+0

Ma sto usando l'API QuerySets qui, non le query non elaborate –