はい、絶対に可能性など、すべてのcomplex[1]
の上に、すべてのcomplex[0]
上のインデックスを持つことが可能であろう、私はcomplex[]
を使うと仮定します。 index on an expressionを使用します。トリッキーな部分はsyntax for composite typesです。複合型の要素に
B-treeインデックス:EXPLAIN ANALYZE
と
CREATE TABLE tbl (tbl_id serial, co complex);
CREATE INDEX tbl_co_r_idx ON tbl (((co).r)); -- note the parentheses!
SQL Fiddle。
同じことがあっても、複合型の配列のために、配列の要素のために働く:
CREATE TABLE tbl2 (tbl2_id serial, co complex[]);
CREATE INDEX tbl2_co1_idx ON tbl2 ((co[1])); -- note the parentheses!
注発現が多かれ少なかれ文字通り一致した場合表現インデックスのみを照会するために使用することができます。
しかし、これはあなたが言及したようにGINインデックスでは意味をなさない。 Per documentation:
GINは一般化反転インデックスの略です。 GINは、インデックス化されるアイテムがコンポジット値である の取り扱いのために設計されており、インデックスによって処理されるクエリは の複合アイテム内の値を検索する必要があります。
GINインデックスを使用すると、内の要素を検索できるように、全体として複合型の配列に意味をなさないと思います。しかし、特定のタイプの実装が必要です。 list of examples in standard Postgresがあります(すべての1次元配列の基本サポートに加えて)。
インデックスの高度な使用方法は、[dba.SE](http://dba.stackexchange.com/)への移行候補になる可能性があります。 –