Django 1.11 提供了创建数据库索引的新方法。到目前为止,我们db_index=True
在每个领域都有:
# example 1
class Person(models.Model):
name = models.CharField(db_index=True)
age = models.IntegerField(db_index=True)
现在我们有models.Index
可能indexes
在class Meta
块内声明——甚至是index_together
.
也就是说,我有两个疑问:
1. 示例 1 中的代码是否与下面的示例 2 执行相同的操作?
# example 2
class Person(models.Model):
name = models.CharField()
age = models.IntegerField()
class Meta:
indexes = [
models.Index(fields=['name']),
models.Index(fields=['age'])
]
2.如果index
有多个字段和index_together
: 下面的示例 3 和 4 做的事情完全一样吗?
# example 3
class Person(models.Model):
name = models.CharField()
age = models.IntegerField()
class Meta:
indexes = [
models.Index(fields=['name', 'age'])
]
# example 4
class Person(models.Model):
name = models.CharField()
age = models.IntegerField()
class Meta:
index_together = [['name', 'age']]
1和2有什么区别,3和4有什么区别?我错过了什么?非常感谢。