Skip site navigation (1) Skip section navigation (2)

Re: Вопрос по intarrays и GIN/GIST индексам

From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: Maxim Boguk <mboguk(at)masterhost(dot)ru>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Вопрос по intarrays и GIN/GIST индексам
Date: 2008-03-20 10:13:50
Message-ID: Pine.LNX.4.64.0803201311030.27666@sn.sai.msu.ru (view raw or flat)
Thread:
Lists: pgsql-ru-general
On Thu, 20 Mar 2008, Maxim Boguk wrote:

> Собственно первый вопрос почему GIN индексы по intarray на postgres 8.3 
> просто не работают :(

а зачем тебе intarray ?

В 8.3 это тебе не нужно.
postgres=# \d tt
        Table "public.tt"
  Column |   Type    | Modifiers
--------+-----------+-----------
  a      | integer[] |
Indexes:
     "gin_idx" gin (a)

postgres=# explain analyze select * from tt where a && '{112}';
                                                       QUERY PLAN
----------------------------------------------------------------------------------------------------------------------
  Bitmap Heap Scan on tt  (cost=88.29..1417.98 rows=500 width=231) (actual time=2.406..9.584 rows=9547 loops=1)
    Recheck Cond: (a && '{112}'::integer[])
    ->  Bitmap Index Scan on gin_idx  (cost=0.00..88.17 rows=500 width=0) (actual time=1.821..1.821 rows=9547 loops=1)
          Index Cond: (a && '{112}'::integer[])
  Total runtime: 13.194 ms
(5 rows)

>
> Второе:
> На аналогичной таблице имеем еще один intarray со следующими данными:
>
> GIN индекс по этому полю делается за 1-10 секунд... но не работает... см п1.
>
> Создание же GIST индекса занимает черт знает сколько времени (сейчас уже вот 
> 4 часа на серьезном сервере работает и грузит одно ядро на 100%).
> Что делать и как вылечить ситуацию (записей смешное количество)?

http://www.postgresql.org/docs/current/static/intarray.html
Two GiST index operator classes are provided: gist__int_ops (used by default) is suitable for small and medium-size arrays, while gist__intbig_ops uses a larger signature and is more suitable for indexing large arrays.

В твоем случае надо использовать gist__intbig_ops


 	Regards,
 		Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83

In response to

pgsql-ru-general by date

Next:From: Peter TeslenkoDate: 2008-03-28 14:28:54
Subject: Про pg_dumpall
Previous:From: Maxim BogukDate: 2008-03-20 08:50:50
Subject: Вопрос по intarrays и GIN/GIST индексам

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group