Postgresql postgres创建一个索引

Postgresql postgres创建一个索引,postgresql,Postgresql,我将从mysql转到postgres,我在创建索引时遇到了问题 使用gist(点列)在表上创建索引点SLOC 这是我得到的回应: 错误:数据类型点没有访问方法“gist”的默认运算符类 提示:必须为索引指定运算符类或为数据类型定义默认运算符类 我已经看到我需要为索引指定操作符类,根据您希望在列上使用的操作符类型,可以使用不同的类。我希望使用@>或~查找点是否位于多边形内 如何指定运算符类??请帮忙是件简单的事,但我被难住了 编辑 下面是我试图向分支表添加索引的打印屏幕:

我将从mysql转到postgres,我在创建索引时遇到了问题

使用gist(点列)在表上创建索引点SLOC

这是我得到的回应:

错误:数据类型点没有访问方法“gist”的默认运算符类 提示:必须为索引指定运算符类或为数据类型定义默认运算符类

我已经看到我需要为索引指定操作符类,根据您希望在列上使用的操作符类型,可以使用不同的类。我希望使用@>或~查找点是否位于多边形内

如何指定运算符类??请帮忙是件简单的事,但我被难住了

编辑

下面是我试图向分支表添加索引的打印屏幕:

                                   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.

当我尝试时,似乎工作正常:

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

您确定您的
点\u col
实际上是
点的类型吗?因为,如果它是一个varchar,那么如果没有btree_gist contrib,它确实会失败得很惨——即使这样,它也不会很有用。

编辑了我的问题,显示了打印屏幕,我试图添加索引……请告诉我我很愚蠢:)它可能是你的Postgresql版本。(我正在运行9.1-beta版,它增加了gist索引,所以这可能就是我没有收到任何错误的原因。)这可能就是我在Centos 5.5系统上使用8.1.23的原因。执行yum更新显示我无法更新到更新的postgres版本….:(,关于如何使用8.1.23实现的任何想法。我似乎找不到在创建索引时添加操作符类的任何位置信息,甚至找不到需要执行多边形/点搜索的操作符类更新:,文档的示例建议您在
框(point\u col,point\u col)上创建索引
.PG 8.1已经超过6年了。这不仅是过时的,而且是无可救药的-|