Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每行中的空字段过多是否会影响PostgreSQL中的搜索性能?_Sql_Django_Database_Postgresql_Database Design - Fatal编程技术网

每行中的空字段过多是否会影响PostgreSQL中的搜索性能?

每行中的空字段过多是否会影响PostgreSQL中的搜索性能?,sql,django,database,postgresql,database-design,Sql,Django,Database,Postgresql,Database Design,我正在使用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)

我正在使用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
最重要的是,大多数行将有电子邮件、密码、域字段,但其余的将保持为空。 类似地,有些将具有用户名、密码和源,而另一些则为空。 我想做的是,每个人都可以根据不同的字段(如电子邮件、密码、域、用户名、哈希、ipaddress)从users表中搜索。在这张表中,将有数十亿个数据。 因此,最好的做法是,即使行中有很多空字段也可以,或者它会影响性能。例如,总共有10亿条记录,但其中5亿条记录的ipaddress字段为空/空,5亿条记录的ipaddress字段中有数据,如果我在表中基于ipaddress字段进行搜索,这是否会影响搜索性能

有没有更好的方法来做到这一点,比如拆分表格或其他事情


感谢

表定义后面的列需要更长的时间才能访问。对于9列来说,这不太可能有意义,但对于200列来说可能有意义

跳过一个空列以到达所需的列只需花费很少的时间,但跳过一个已占用的列也会花费很少的时间

可能最有可能为NULL的列最不可能被搜索,因此在表定义的末尾声明它们是有意义的


这是过早的优化。如果你真的很担心,那就设计一个数据生成器来生成真实的数据,并根据真实的数据对真实的查询进行实际测试。

阅读本文。应该能让你很好的理解。这能回答你的问题吗?