Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 Postgres自定义域类型vs唯一_Postgresql_Rdbms - Fatal编程技术网

Postgresql Postgres自定义域类型vs唯一

Postgresql Postgres自定义域类型vs唯一,postgresql,rdbms,Postgresql,Rdbms,我不能确定我的表中是否存储了空文本。因此,我创建了一个域类型: 创建域非空文本作为文本检查(值~'\S')并将所有文本类型更改为非空文本 到目前为止还不错。但是当我将类型改回文本并创建一个唯一的索引和一个空值行时,效率会更高吗?您当然需要对其进行基准测试,但我认为您应该改变您的方法 您拥有的当前域类型逻辑计算内存中的字符串。第二种方法需要访问索引并查找缓存中可能存在或不存在的块。与内存中的操作相比,访问存储(即使不是每次都访问)是非常昂贵的,因此这可能不是一个好主意。我认为您对域的方法是正确的。

我不能确定我的表中是否存储了空文本。因此,我创建了一个域类型:

创建域非空文本作为文本检查(值~'\S')并将所有文本类型更改为非空文本


到目前为止还不错。但是当我将类型改回文本并创建一个唯一的索引和一个空值行时,效率会更高吗?

您当然需要对其进行基准测试,但我认为您应该改变您的方法


您拥有的当前域类型逻辑计算内存中的字符串。第二种方法需要访问索引并查找缓存中可能存在或不存在的块。与内存中的操作相比,访问存储(即使不是每次都访问)是非常昂贵的,因此这可能不是一个好主意。

我认为您对域的方法是正确的。具有唯一约束的替代方案是一个有趣的想法,但我认为它是过早的优化。

一个唯一的索引是完全不同的,然后检查非空值是肯定的。但如果我创建的行中包含所有禁止的值,那么就不能再添加这些值了。显然,考虑将您的检查条件更改为
值“”
,以使其更快速、更易于阅读是非常糟糕的。@petereinstraut然后允许使用带有多个空格的值?是的,这取决于您所说的“空文本”的含义。因此,如果您实际上并不需要,则添加唯一索引绝对不是一个好主意@差不多,是的。