我有一个如下所示的模型,
class Person(models.Model):
first_name = models.CharField(max_length=30)
middle_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30)
person_id = models.CharField(max_length=32, blank=True)
其中person_id在save上填充,这是uuid
生成的随机十六进制字符串,看起来像'E4DC6C20BECA49E6817DB2365924B1EF'
所以我的问题是,在大量对象的数据库中,查询
Person.objects.get(pk=10024)
(pk
)vs(person_id
)
Person.objects.get(person_id='E4DC6C20BECA49E6817DB2365924B1EF')
任何一种方法在大规模数据中都有性能优势吗?
我不太了解数据库内部。
我的数据库是postgresql
答案 0 :(得分:0)
要通过查询数据库中的列来获得良好的性能,需要对其进行索引。主键列是自动索引的(根据定义),但是你的person_id不会是;您应该在声明中添加db_index=True
,然后制作并运行迁移。