2013-02-09 15 views
30

Czytam książkę o stylu kodowania Django i jeden z nich omawia tutaj: db_index = True. Odkąd używam Django, nigdy nie używam tej funkcji, ponieważ nie wiem, co ta funkcja może zrobić.Dodaj indeksy (db_index = True)

Oto moje pytanie, kiedy rozważyć dodanie indeksów?

Odpowiedz

73

To nie jest specyficzne dla django; więcej do zrobienia z bazami danych. Dodajesz indeksy do kolumn, gdy chcesz przyspieszyć wyszukiwanie w tej kolumnie.

Zazwyczaj tylko klucz podstawowy jest indeksowany przez bazę danych. Oznacza to, że wyszukiwanie przy użyciu klucza podstawowego jest zoptymalizowane.

Jeśli wykonujesz wiele wyszukiwań w drugiej kolumnie, rozważ dodanie indeksu do tej kolumny, aby przyspieszyć działanie.

Należy pamiętać, że podobnie jak większość problemów skali, mają one zastosowanie tylko w przypadku statystycznie dużej liczby wierszy (10 000 nie jest duża).

Dodatkowo za każdym razem, gdy robisz wkładkę, indeksy muszą być aktualizowane. Uważaj więc, w której kolumnie dodajesz indeksy.

Jak zwykle, możesz zoptymalizować tylko to, co możesz zmierzyć - użyj więc instrukcji EXPLAIN i dzienników bazy danych (szczególnie wszystkich dzienników powolnego sprawdzania), aby dowiedzieć się, gdzie mogą być przydatne indeksy.

+3

może to pomóc (dużo) https://github.com/django-debug-toolbar/django-debug-toolbar#django-debug-toolbar – maazza

+0

Indeksy mogą również przyspieszyć sortowanie. [Ten artykuł] (http://sqlmag.com/database-performance-tuning/indexing-sort-performance) dotyczy programu MS SQL Server, ale to samo dotyczy dowolnej bazy danych. – Nick