數據庫數據規模挺大的,建立索引以加速查詢。
通過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"]