PostgreSQL 9.2: 关于citext[]的GIN索引[英] PostgreSQL 9.2: GIN Index on citext[]

本文是小编为大家收集整理的关于PostgreSQL 9.2: 关于citext[]的GIN索引的处理方法,想解了PostgreSQL 9.2: 关于citext[]的GIN索引的问题怎么解决?PostgreSQL 9.2: 关于citext[]的GIN索引问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我需要加速这个查询:

SELECT * FROM mytable 
WHERE 'value' = ANY("citext_array_col") LIMIT 1;

其中 citext_array_col 是一个 citext 数组.我尝试创建一个操作符类:

CREATE OPERATOR CLASS gin__citext_ops
FOR TYPE citext[] USING gin
AS

        OPERATOR        6       = (anyarray, anyarray),
        FUNCTION        1       citext_cmp (citext, citext),
        FUNCTION        2       ginarrayextract(anyarray, internal, internal),
        FUNCTION        3       ginqueryarrayextract(anyarray, internal, smallint, internal, internal, internal, internal),
        FUNCTION        4       ginarrayconsistent(internal, smallint, anyarray, integer, internal, internal, internal, internal),
        STORAGE         citext;

我可以用这个操作符类创建 GIN 索引,但它没用(使用 set enable_seqscan = off 规划器仍然使用顺序扫描).我不知道 ginqueryarrayextract() &公司做,没有关于这个的文档.

我发现的是 GIN 索引的 intarray 扩展,但代码是 C 语言的,我对 PG C 扩展不太熟悉...

有没有更聪明的方法来为这个查询创建索引?也许使用文本支持功能?

推荐答案

PostgreSQLuuid 数组上的 GIN 索引为 uuid 提供了答案,该答案可能适用于 citext.

本文地址:https://www.itbaoku.cn/post/1763980.html