一个领域上的一个模型, foo = models.ForeignKey(Foo) 将自动添加数据库的指数,用于列,以便使查询更快。这是很好的,好的,但强哥的文档不状态是否领域,在模型的元的 unique_together 收到同样的处理。我碰巧有一个模型,在该模型中的一个焦炭领域,其中列出 unique_together 需要一个指数,用于快速查找。我知道这不会伤害任何东西添加一个重复的 db_index=True 在该领域的定义,但是我好奇。

有帮助吗?

解决方案

unique_together不会自动为列表中包含的每个字段添加索引。

新版Django建议改用“索引和约束”元选项:

https://docs.djangoproject.com/zh / 2.2 / ref / models / options /#unique-together

https://docs.djangoproject.com/zh / 2.2 / ref / models / options /#index-together

其他提示

对于来到这里的人,想知道除index_together之外是否还需要一个unique_together来获得索引的性能优势,Postgres的答案是,它们是在功能上相同。

如果unique_together确实添加了索引,则它将是多列索引。

如果您希望对其中一列进行单独索引,我相信您需要在字段定义中指定db_index=True

Django1.5和高, 你可以使用 {Model}.Meta.index_together 类属性。如果你有两个领域命名的 foobar, 你会添加:

class Meta(object):
    index_together = unique_together = [
        ['foo', 'bar']
    ]

如果你只有一套独特的领域,可以使用一个维迭代为 unique_together.但是, 该文件 并不表示同样适用于 index_together.

这也没关系:

class Meta(object):
    unique_together = 'foo', 'bar'
    index_together = [
        ['foo', 'bar']
    ]

然而,这是 支持文件:

class Meta(object):
    unique_together = 'foo', 'bar'
    index_together = 'foo', 'bar'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top