Postgres создать индекс - PullRequest
6 голосов
/ 10 июля 2011

Я перехожу из mysql в postgres и у меня возникают проблемы при создании индекса.

СОЗДАТЬ ИНДЕКС pointsloc ON В таблице ИСПОЛЬЗОВАТЬ gist (point_col);

Это ответ, который я получаю:

ОШИБКА: точка типа данных не имеет класса оператора по умолчанию для метода доступа "gist" СОВЕТ: Вы должны указать класс операторов для индекса или определить класс операторов по умолчанию для типа данных.

Я видел, что мне нужно указать класс операторов для индекса, могут использоваться разные классы в зависимости от типа операторов, которые вы хотите использовать в столбце. Я хочу использовать @> или ~, чтобы определить, находится ли точка внутри многоугольника.

Как мне указать класс операторов? Помогите, пожалуйста, быть простой вещью, но я в тупике!

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.

1 Ответ

3 голосов
/ 10 июля 2011

Кажется, что работает нормально, когда я пытаюсь:

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

Вы уверены, что ваш point_col на самом деле это типа point?Потому что, если это varchar, он действительно с треском провалится без участия btree_gist - и даже тогда это будет не очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...