2013-02-09 137 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