【问题标题】:Add Indexes (db_index=True)添加索引 (db_index=True)
【发布时间】:2013-01-25 00:51:54
【问题描述】:

我正在阅读一本关于 Django 编码风格的书,他们讨论的一件事是db_index=True。自从我开始使用 Django 以来,我从来没有使用过这个函数,因为我不确定它是做什么的。

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

【问题讨论】:

    标签: django django-models django-database


    【解决方案1】:

    这并不是 django 特有的;更多地与数据库有关。当您想加快对该列的搜索时,您可以在该列上添加索引。

    通常,只有主键被数据库索引。这意味着使用主键的查找得到了优化。

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

    请记住,与大多数规模问题一样,这些问题仅适用于您拥有大量统计数据的行(10,000 行不算大)。

    此外,每次插入时,都需要更新索引。所以要小心你添加索引的列。

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

    【讨论】:

    【解决方案2】:

    上述答案是正确的,但在某些情况下,搜索是在只有 varchar 数据类型(如 email)的列上进行的。在那里你需要添加一个索引。

    以下是这样做的方式:

    Index(name='covering_index', fields=['headline'], include=['pub_date'])
    

    来自https://docs.djangoproject.com/en/3.2/ref/models/indexes/的参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 2019-12-30
      • 1970-01-01
      • 2021-01-10
      • 2017-05-25
      • 2015-08-28
      • 2017-05-20
      • 2016-04-17
      相关资源
      最近更新 更多