GIN或GIST可以用于“至少包含”比较吗?

时间:2014-11-26 06:18:36

标签: arrays postgresql indexing

我正在使用扩展名intarray进行与9.2.9版本的int比较。

虽然&&可以使用索引来过滤包含至少一个值的数组,但有没有办法使用GIN或GIST索引来过滤至少有n个值相交的数组?

例如,GIN或GIST如何使用2 <= icount(ARRAY[1,2,3] & int_array_column)2 <= ARRAY_UPPER((ARRAY[1,2,3] & int_array_column),1)

2 个答案:

答案 0 :(得分:1)

Teodor Sigaev的smlar扩展有我正在寻找的东西。 %运算符对n个相交值进行索引。

答案 1 :(得分:0)

btree可以索引你的表达式,然后过滤你需要的值的数量:

CREATE INDEX my_awesome_ids 
ON my_fat_table (icount(ARRAY[1,2,3] & int_array_column)); 

SELECT * 
FROM my_fat_table 
WHERE 2 <= (icount(ARRAY[1,2,3] & int_array_column));