2017-12-17 8 views
0

PostgreSQL 10のtstzrange[]カラムにインデックスを設定しようとしています。その名前とデータ型はtstzrange[]とし、not nullと設定します。エラー:データ型tstzrange []に​​Postgres 10のアクセス方法 "gist"のデフォルトの演算子クラスがありません

その後、CREATE EXTENSION btree_gist;をデータベースに使用していました。

は、それから私は、私は、インデックス範囲と、私がすべきことdocumentationで見た:

CREATE INDEX era_ac_range_idx ON era_ac USING GIST (era_ac_range); 

...その後私が得る:

ERROR: data type tstzrange[] has no default operator class for access method "gist"

れ、率直に言って、私はしないでくださいそれが実際に何を意味するのか、それを解決する方法を知っている。私は何をすべきか ?

PS、その列は現在空ですが、データはまだありません。

Ps2この表は、年代、時代、時代(たとえば60年代)、タイムゾーンの範囲(例:1960-1969)を示しています。 日付がユーザーによって挿入され、それが属する年代をチェックしたいと思います。

+0

範囲を1つだけ保存する場合は、なぜ範囲の配列を使用しますか? –

+0

しかし、私はちょうど1つの範囲を保存したくありません。 Choronological時代は複数あります。ちょうど私が追加する質問のPs2部分をチェックしてください。ありがとうございました。 – slevin

+1

はい、それは "and _the_ timezone range"と言われています。それは私のための単一の範囲です –

答えて

1

まあ、timestamp-rangesの配列は単一の列としてあります。 GINインデックスと(iirc)GINまたはGiSTの範囲を使用して配列をインデックスできます。しかし、私は両方の列のインデックスがどのように動作するのかわかりません。私はそれをN次元のr-treeやそのようなものとしてモデル化できると思います。

範囲が重複していないかどうかチェックしたいと思っています。データを正規化して、各行に1つの範囲を持つリンクテーブルを作成できますか?

+0

こんにちはRichard。申し訳ありませんが、あなたが実際にやるべきことを示唆しているものは得られません。私はPostgreの索引とその範囲の初心者です。私がしようとしていることは、私の質問に追加した「Ps2」の部分をチェックしてください。ありがとうございました。 – slevin

+0

はい、今はタイムスタンプではなく配列を使用しています。タイムスタンプの配列だったのでインデックスできませんでしたか? – slevin

関連する問題