数据库数据规模挺大的,建立索引以加速查询。
通过db_index和Meta index选项给数据表字段建立索引
使用索引可快速访问数据库表中的特定信息。数据库索引好比是一本书前面的目录,没有索引目录的话,你访问书中某个页面需要从第1页遍历到最后一页,如果有目录,你可以快速地根据目录查找到所需要的页面。Django项目中如果你需要频繁地对数据表中的某些字段(如title)使用filter(), exclude()和order_by()方法进行查询,我们强烈建议你对这些字段建议索引(index), 提升查询效率。
要对模型中的某个字段建立数据库索引,你可以使用db_index选项,也可以使用Meta选项建立索引。使用Meta选项的好处是你可以一次性对多个字段建立索引,还可以对多个字段建立组合索引。
代码如下:
class CountryData(models.Model):
date = models.DateField()
country = models.ForeignKey(Country, on_delete=models.CASCADE, default="")
confirm_add = models.IntegerField(default=0)
confirm = models.IntegerField(default=0)
heal = models.IntegerField(default=0)
dead = models.IntegerField(default=0)
def __str__(self):
return str(self.country) + " " + self.date.strftime("%Y/%m/%d")
class Meta:
indexes = [models.Index(fields=['country']), ]
同时Meta中还可以定义联合索引:
index_together = ["user", "goods"]
联合约束:(即goods与user不相同)
unique_together = ["goods", "user"]