2011-07-10 14 views
6

私はmysqlからpostgresに行く予定で、インデックスを作成する際に問題が発生しています。postgresインデックスを作成する

CREATE INDEX pointsloc ONテーブルUSING gist(point_col);

これは私が戻って取得応答である:

ERROR:データ型点は、アクセス方法「要旨」 ヒントにはデフォルトの演算子クラスを持っていない:あなたは、インデックスの演算子クラスを指定するか、デフォルトの演算子クラスを定義する必要がありますデータ型の場合

インデックスに演算子クラスを指定する必要があることがわかりましたが、その列で使用する演算子のタイプによって異なるクラスを使用できます。 @>または〜を使用して、ポイントがポリゴン内にあるかどうかを調べたいと思います。

私はどのように演算子クラスを指定しますか?助けてくださいシンプルなものでなければなりませんが、私は困惑しています!

EDIT以下

は分岐テーブルにインデックスを追加しようとしている私の印刷画面である:

        Table "public.branch" 
     Column  |  Type  |      Modifiers      
------------------+------------------+----------------------------------------------------- 
id    | integer   | not null default nextval('branch_id_seq'::regclass) 
name    | character(120) | 
center_point_lat | double precision | 
center_point_lng | double precision | 
center_point  | point   | 
Indexes: 
    "branch_pkey" PRIMARY KEY, btree (id) 

paul=# create index pt_idx on branch using gist (center_point); 
ERROR: data type point has no default operator class for access method "gist" 
HINT: You must specify an operator class for the index or define a default operator class for the data type. 

答えて

3

は、私がしようとすると、細かい動作しているようだ:

test=# create table test (pt point); 
CREATE TABLE 
test=# create index pt_idx on test using gist (pt); 
CREATE INDEX 

point_col実際にははのですか?なぜなら、それがvarcharならば、btree_gistのcontribなしでは本当に悲惨に失敗するからです。それでも、それはあまり役に立たないでしょう。

+0

インデックスを追加しようとしている印刷画面と私の質問を編集しました...私は愚かであると教えてください:) –

+0

あなたのPostgreSQLのバージョンかもしれません。 (私は9.1-betaを実行しています。これは要点の索引付けを追加していますので、何らかのエラーが出ることはありません)。 –

+0

これはおそらくCentOS 5.5システムで8.1.23を使用しています。 yumの更新を行うと、私は新しいPostgresバージョンへの更新ができなくなってしまったことを示しています。:(8.1.23でどうやってやったのかについてのアイデアはどこにでもあります。どのようなものでも、ポリゴン/ポイント検索を行う必要があります。 –

関連する問題