我正在使用扩展名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)
?
答案 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));