我不确定不能将空文本存储到我的表中。因此我创建了一个域类型:
CREATE DOMAIN non_empty_text AS TEXT CHECK( VALUE ~ '\S' );
并将所有文本类型更改为non_empty_text。
到目前为止一切顺利。但是当我将类型更改回文本并创建一个UNIQUE索引和一个空值的行时,它会更有效吗?
答案 0 :(得分:1)
你当然需要对此进行基准测试,但是我要说你应该改变你的方法。
当前域类型逻辑已经评估了内存中的字符串。第二种方法需要访问索引并查找可能在缓存中或可能不在缓存中的块。访问存储,即使它没有发生所有时间,与内存操作相比是如此昂贵,这可能不是一个好主意。
答案 1 :(得分:1)
我认为您使用域名的方法是正确的。具有唯一约束的替代方案是一个有趣的想法,但我认为它过早优化。