2013-02-09 15 views
30

Sto leggendo un libro su Django Coding Style e uno discusso qui è db_index = True. Da quando uso Django, non uso mai questa funzione perché non so cosa può fare questa funzione.Aggiungi indici (db_index = True)

Questa è la mia domanda, quando considerare l'aggiunta di indici?

risposta

73

Questo non è proprio specifico per il django; più a che fare con i database. Aggiungi indici su colonne quando vuoi velocizzare le ricerche su quella colonna.

In genere, solo la chiave primaria viene indicizzata dal database. Ciò significa che le ricerche utilizzando la chiave primaria sono ottimizzate.

Se si eseguono molte ricerche su una colonna secondaria, si consiglia di aggiungere un indice a quella colonna per accelerare le operazioni.

Ricordare, come la maggior parte dei problemi di scala, questi si applicano solo se si dispone di un numero di righe statisticamente elevato (10.000 non è grande).

Inoltre, ogni volta che si esegue un inserimento, gli indici devono essere aggiornati. Quindi fai attenzione a quale colonna aggiungi gli indici.

Come sempre, è possibile ottimizzare solo ciò che è possibile misurare, quindi utilizzare l'istruzione EXPLAIN ei registri del database (in particolare i registri delle query lente) per scoprire dove gli indici possono essere utili.

+3

questo può aiutare (molto) https://github.com/django-debug-toolbar/django-debug-toolbar#django-debug-toolbar – maazza

+0

Gli indici possono anche velocizzare l'ordinamento. [Questo articolo] (http://sqlmag.com/database-performance-tuning/indexing-sort-performance) riguarda MS SQL Server, ma lo stesso vale per qualsiasi database. – Nick