【问题标题】:Querying an object with pk vs custom object_id使用 pk 与自定义 object_id 查询对象
【发布时间】:2016-11-20 15:08:57
【问题描述】:

我有一个模型如下图,

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 的位置,这是由uuid 生成的随机十六进制字符串,类似于'E4DC6C20BECA49E6817DB2365924B1EF'

所以我的问题是,在包含大量对象的数据库中,查询是否

Person.objects.get(pk=10024)

(pk) 与 (person_id)

Person.objects.get(person_id='E4DC6C20BECA49E6817DB2365924B1EF')

任何一种方法在大规模数据中具有性能优势吗?

我不太了解数据库内部结构。

我的数据库是postgresql

【问题讨论】:

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


【解决方案1】:

为了从查询数据库中的列中获得良好的性能,它需要被索引。主键列被自动索引(根据定义),但您的 person_id 不会;您应该将db_index=True 添加到声明中,然后进行并运行迁移。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 2016-11-11
    • 2019-06-12
    • 2018-09-15
    • 2017-08-11
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多