【发布时间】:2020-06-24 14:59:53
【问题描述】:
我使用 PostgreSQL 作为我的数据库以及 Django
下面是我的数据库模型
class Users(model.Model):
email = model.CharField(max_length=50, default="")
password = model.CharField(max_length=40, default="")
source = model.CharField(default='unknown', max_length=150)
domain = model.CharField(max_length=50, default="")
before_at = model.CharField(max_length=255, default="")
username = model.CharField(max_length=150, default="")
hash = model.CharField(max_length=255, default="")
ipaddress = model.CharField(max_length=50, default="")
phonenumber = model.CharField(max_length=100, default="")
class Meta:
constraints = [
models.UniqueConstraint(fields=['email', 'password', 'source'], name='uniqueness constraints')
]
def __str__(self):
return self.email
问题是大多数行将包含电子邮件、密码、域字段,但其余行将保持为空。 同样,有些会有用户名、密码、来源,而有些则为空。 我想要做的是每个人都可以根据不同的字段(例如电子邮件、密码、域、用户名、哈希、IP 地址)从用户表中进行搜索。这张表中将有 数十亿 条数据。 所以最好的做法是即使行有很多空字段也可以,或者它会影响性能。例如,总共有 10 亿条记录,但其中有 50 亿条记录有空/空 ipaddress 字段,而有 50 亿条记录在 ipaddress 字段中有数据,那么如果我根据 ipaddress 字段在表中搜索是否会影响搜索性能与否。
有没有更好的方法来做到这一点,比如拆分表格或其他任何事情?
谢谢
【问题讨论】:
-
阅读thread。应该给你一个很好的理解。
标签: sql django database postgresql database-design