Django是否比SQL关系更快地过滤字符串?

问题描述 投票:3回答:1

如果我通过他们的user_idstring)查询我的用户信息而不是创建Profile模型并使用SQL关系将它们链接到其他模型,这是一个重大缺陷吗?

示例1 :( user_id存储在django会话中。)

class Information(models.Model):
    user_id = models.CharField(...)
    ...

# also applies for .filter() operations.
information = Information.objects.get(user_id=request.getUser['user_id'])

注意:我正在Auth0上存储用户的个人资料信息。

例2 :( user_id存储在Profile。)

class Profile(models.Model):
    user_id = models.CharField(...)

class Information(models.Model):
    profile = models.ForeginKey(Profile, ...)
    ...

information = Information.objects.get(profile=request.getProfile)

注意:使用此方法,Profile只有一个字段user_id

在Django上,使用字符串而不是查询对象会影响检索项目的性能吗?

django django-models sqlperformance
1个回答
3
投票

如Dirk所述,这里的表现不是问题。一旦列被索引,与其他因素相比,数据类型之间的性能差异应该可以忽略不计。这是一个更加透视的related SO question

您应该注意的是防止重复数据的完整性,然后您必须自己处理,而不是依赖数据库中经过充分测试的完整性检查。

另一个方面是,如果你的数据之间存在关系,你绝对应该确保使用Django的relationships在模型中准确表示它们。否则,使用Django的ORM真的没什么意义。祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.