From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: GIN индекс - можно ли избавиться от Recheck? |
Date: | 2016-05-09 06:39:35 |
Message-ID: | 20160509063935.GA21910@vdsl.uvw.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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=1109868 loops=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(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
From | Date | Subject | |
---|---|---|---|
Next Message | Oleg Bartunov | 2016-05-09 15:31:48 | Re: [pgsql-ru-general] GIN индекс - можно ли избавиться от Recheck? |
Previous Message | Dmitry E. Oboukhov | 2016-05-07 10:57:27 | GIN индекс - веса |