我有一个布尔列,对于 >99.9% 的行将是错误的。我需要有效地获取该列为真的所有行。
最好的选择是什么?在列上创建索引?在列为真的地方创建部分索引?但我不知道部分索引将/应该包含哪些列。
这不会解析,但有没有办法做类似的事情:CREATE INDEX mytable_cond ON mytable () WHERE cond = TRUE;
?索引在哪里保存字面上的零列?
我有一个布尔列,对于 >99.9% 的行将是错误的。我需要有效地获取该列为真的所有行。
最好的选择是什么?在列上创建索引?在列为真的地方创建部分索引?但我不知道部分索引将/应该包含哪些列。
这不会解析,但有没有办法做类似的事情:CREATE INDEX mytable_cond ON mytable () WHERE cond = TRUE;
?索引在哪里保存字面上的零列?
你说的是“行”,我认为你的意思是“列”。
在索引中指定一个空的列列表是不合法的。只需选择一列,最好是具有短数据类型的列。如果不出意外,只需在两个地方重复相同的列。
请注意如何制定我们的索引和查询。
cond = true
查询不能使用定义的部分索引,反之亦然cond is true
,这些不被视为等效操作。