>>> 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=1109868loops=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 он потратил столько же времени сколько на выборку.
>>
>> можно ли от этого избавиться?
> Recheck связан с bitmap-ом здесь. Analyzе всегда выдает recheck и надо
> смотреть на строчку Heap Blocks: ...... В ваше случае recheck-а
> реально не было, видно work_mem у вас приличного размера, так что
> особенно оптимизировать нечего. А вот если у вас будет в этой строке
> написано lossy=..., то тут и будет речек.
эм я тогда не очень понимаю EXPLAIN.
он пишет что индекс скан у него закончился на 271 милисекунде.
а потом речек и битмап скан. который закончился на 519 милисекунде.
если бы речек был то у него свое время было бы прописано?
так?
--
. ''`. 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