Я использую 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
Дело в том, что в большинстве строк будет электронная почта, пароль, поле домена, но остальное останется пустым. Точно так же у некоторых будет имя пользователя, пароль, источник, в то время как другие пусты. Что я хочу сделать, так это то, что каждый может искать из таблицы пользователей по разным полям, таким как электронная почта, пароль, домен, имя пользователя, ha sh, ipaddress. В этой таблице будет миллиардов данных. Так что лучше всего, если в строках много пустых полей или это влияет на производительность. Например, всего существует один миллиард записей, но в которых полмиллиарда имеют пустое / нулевое поле ipaddress, а полмиллиарда записей имеют данные в поле ipaddress, тогда, если, если я буду искать в таблице на основе поля ipaddress, это повлияет на производительность поиска или нет.
Есть ли лучший способ сделать это, например, разделить стол или что-то еще?
спасибо