0

次のカスタムタイプがあります。

CREATE TYPE param_range AS (  
    param smallint,
    range int4range
);  

次の表:

CREATE TABLE test4
(
    id serial NOT NULL,
    geo point,
    ext param_range[]
)

次のインデックス:

CREATE INDEX ix_test4_geo ON test4 USING GIST ((geo));
CREATE INDEX ix_test4_ext on test4 USING GIN (ext);

GIN インデックスには、カスタム タイプの演算子/関数が必要です。どうすればいいですか?

4

1 に答える 1

2

GIN インデックスに必要なのは、カスタム オペレーターだけではありません。オペレーターの家族全員が必要です。基本的に、次のことを行う必要があります。

  1. GIN opclasses に関するドキュメントを参照してください。

  2. それらを処理する一連の IMMUTABLE 関数を作成します。

  3. これらの関数に基づいて一連の演算子を作成します。

  4. これらをカスタム オペレーター クラスで結び付けます。

これは単純な少量の作業ではありません。ただし、かなりの時間が必要です (型のコンテキストで「重複」とはどういう意味ですか?) ため、設計段階でかなりの時間を費やすことを期待する必要があります。

基本的に、GIST/GIN のサポートが必要な場合は、ストレージだけでなく運用目的でもカスタム タイプを設計しています。これはプロジェクトです。

于 2013-11-02T12:39:42.210 に答える