GIN 不支持完整的索引扫描,因为通常每个值对应多个 key ,每个堆指针都会被多次返回,并且没有有效的办法防止这种情况的发生。
当 extractQuery
返回零个 key 的时候,GIN 将会报错。取决于不同的操作符,一个空白查询可能匹配所有或部分甚至不匹配任何索引值(例如每个数组都包含空数组,但是并不重叠)。GIN 既无法检查正确的结果,也无法生成全索引扫描的结果。
extractValue
返回零个 key 并不是错误,不过在这种情况下,该索引值将在索引中没有代表性。这也是为什么全索引扫描没什么用处的的另外一个原因:它同样会错过这些行。
GIN 仅使用相等匹配搜索 key 。这一点在将来或许可以被改进。