Re: GIN индекс - можно ли избавиться от Recheck? - Mailing list pgsql-ru-general

From Dmitry E. Oboukhov
Subject Re: GIN индекс - можно ли избавиться от Recheck?
Date
Msg-id 20160509063935.GA21910@vdsl.uvw.ru
Whole thread Raw
List pgsql-ru-general
имеется табличка

> \d test
                         Таблица "public.test"
 Колонка |   Тип   |                   Модификаторы
---------+---------+---------------------------------------------------
 id      | integer | NOT NULL DEFAULT nextval('test_id_seq'::regclass)
 tags    | text[]  | NOT NULL
Индексы:
    "test_pkey" PRIMARY KEY, btree (id)


заполняем тестовую таблицу

> INSERT INTO test
    SELECT
        generate_series(1, 10000000, 1) id,
        ARRAY[
            (ARRAY['abc', 'cde', 'def', 'ghi'])[1 + (random()*3)::INTEGER],
            (ARRAY['abc', 'cde', 'def', 'ghi'])[1 + (random()*3)::INTEGER]
        ] tags;
INSERT 0 10000000

> select count(*) FROM test;
  count
----------
 10000000
(1 строка)

Строим GIN индекс

> CREATE INDEX test_idx ON test USING GIN(tags);
CREATE INDEX

> EXPLAIN ANALYZE SELECT * FROM test WHERE tags @> ARRAY['abc', 'cde']::TEXT[];
                                                             QUERY PLAN
             

-------------------------------------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on test  (cost=17511.01..131825.49 rows=1668518 width=41) (actual time=286.438..519.681 rows=1109868
loops=1)
   Recheck Cond: (tags @> '{abc,cde}'::text[])
   Heap Blocks: exact=93458
   ->  Bitmap Index Scan on test_idx  (cost=0.00..17093.88 rows=1668518 width=0) (actual time=271.244..271.244
rows=1109868loops=1) 
         Index Cond: (tags @> '{abc,cde}'::text[])
 Planning time: 0.665 ms
 Execution time: 552.225 ms
(7 строк)

В документации написано что Gin использует Recheck только когда
используются веса, но тут никакие веса не используются.
На recheck он потратил столько же времени сколько на выборку.

можно ли от этого избавиться?

--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment

pgsql-ru-general by date:

Previous
From: "Dmitry E. Oboukhov"
Date:
Subject: GIN индекс - веса
Next
From: Oleg Bartunov
Date:
Subject: Re: [pgsql-ru-general] GIN индекс - можно ли избавиться от Recheck?