添加索引(db_index = True)


73

我正在读一本关于Django编码风格的书,他们讨论的一件事是db_index=True。自从我开始使用Django以来,我就从未使用过此功能,因为我不确定它的作用。

所以我的问题是,何时考虑添加索引?

Answers:


146

这不是真的特定于Django;与数据库有关。当您想加快对该列的搜索时,可以在该列上添加索引。

通常,数据库仅索引主键。这意味着对使用主键的查找进行了优化。

如果您在辅助列上进行大量查找,请考虑向该列添加索引以加快处理速度。

请记住,与大多数规模问题一样,这些问题仅在统计上有大量行(10,000不大)的情况下适用。

此外,每次执行插入操作时,都需要更新索引。因此,请注意添加索引的列。

与往常一样,您只能优化可衡量的内容-因此,请使用该EXPLAIN语句和数据库日志(尤其是所有慢查询日志)来找出索引在哪里有用。


5
这可能有助于(很多)github.com/django-debug-toolbar/...
maazza

1
索引还可以加快排序速度。本文是关于MS SQL Server的,但对于任何数据库都一样。
尼克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.