Re: GIN индекс - можно ли избавиться от Recheck?
От | Dmitry E. Oboukhov |
---|---|
Тема | Re: GIN индекс - можно ли избавиться от Recheck? |
Дата | |
Msg-id | 20160509063935.GA21910@vdsl.uvw.ru обсуждение исходный текст |
Список | 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
Вложения
В списке pgsql-ru-general по дате отправления: