2013-02-09 135 views
30

我在讀一本關於Django編碼風格的書,他們在這裏討論的是db_index = True。自從使用Django之後,我從不使用這個函數,因爲我不知道這個函數可以做什麼。添加索引(db_index = True)

這是我的問題,何時考慮添加索引?

回答

73

這不是真的django具體;更多與數據庫有關。當您想要加快對該列的搜索時,可以在列上添加索引。

通常,只有主鍵由數據庫索引。這意味着使用主鍵查找優化。

如果您在輔助列上進行大量查找,請考慮向該列添加索引以加快速度。

請記住,像大多數規模問題一樣,這些僅適用於統計數量較大的行(10,000個規模不大)。

此外,每次插入時,索引都需要更新。所以要注意添加索引的列。

與往常一樣,您只能優化您可以測量的內容 - 因此請使用EXPLAIN語句和數據庫日誌(尤其是任何慢速查詢日誌)找出索引可用的位置。

+3

這可能有幫助(很多)https://github.com/django-debug-toolbar/django-debug-toolbar#django-debug-toolbar – maazza 2014-01-02 09:04:27

+0

索引也可以加快排序。 [本文](http://sqlmag.com/database-performance-tuning/indexing-sort-performance)關於MS SQL Server,但對於任何數據庫都是如此。 – Nick 2017-04-11 05:35:36