使用pk和自定义object_id

时间:2016-07-18 05:54:30

标签: django database query-optimization django-queryset database-performance

我有一个如下所示的模型,

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

1 个答案:

答案 0 :(得分:0)

要通过查询数据库中的列来获得良好的性能,需要对其进行索引。主键列是自动索引的(根据定义),但是你的person_id不会是;您应该在声明中添加db_index=True,然后制作并运行迁移。