我正在阅读一本关于 Django 编码风格的书,他们讨论的一件事是db_index=True
. 自从我开始使用 Django 以来,我从未使用过此功能,因为我不确定它的作用。
所以我的问题是,何时考虑添加索引?
我正在阅读一本关于 Django 编码风格的书,他们讨论的一件事是db_index=True
. 自从我开始使用 Django 以来,我从未使用过此功能,因为我不确定它的作用。
所以我的问题是,何时考虑添加索引?
这不是真正的 django 特定的;更多地与数据库有关。当您想加快对该列的搜索时,您可以在该列上添加索引。
通常,只有主键被数据库索引。这意味着使用主键的查找得到了优化。
如果您对辅助列进行大量查找,请考虑向该列添加索引以加快速度。
请记住,与大多数规模问题一样,这些问题仅适用于统计上大量的行(10,000 不算大)。
此外,每次插入时,都需要更新索引。所以要小心添加索引的列。
与往常一样,您只能优化您可以测量的内容 - 因此使用EXPLAIN
语句和数据库日志(尤其是任何慢查询日志)来找出索引在哪里有用。
上面的答案是正确的,但在某些情况下,搜索是在只有 varchar 数据类型(如email
. 在那里你需要添加一个索引。
以下是这样做的方法:
Index(name='covering_index', fields=['headline'], include=['pub_date'])
来自https://docs.djangoproject.com/en/3.2/ref/models/indexes/的参考