【发布时间】:2015-05-21 08:14:40
【问题描述】:
我有一个项目在 PostgreSQL v9.4 和 Django 1.6 上运行(计划很快升级到 v1.8...)
假设我有以下模型:
class Product(models.Model):
x = models.ForeignKey(Shop)
y = models.PositiveIntegerField()
class Meta:
unique_together = (("x", "y"), )
据我所知:
- 字段 x 是一个外键,所以除非另有要求,Django 会自动为 (x) 添加一个 db 索引
- 由于 unique_together 语句,PostgreSQL 隐式生成 (x, y) 的组合索引
- 通常,(x, y) 的索引也可以作为 (x) 的索引
- 重复索引会在 SQL INSERT 操作中消耗额外的时间
我的结论是,在这种情况下,最好为字段 x 显式声明 db_index=false,以避免重复索引。
这是一个有效的结论吗?
【问题讨论】:
标签: django postgresql