Почему стоимость сканирования битовой карты не линейна количеству строк - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть две части двух результатов анализа-объяснения в postgres:

   ->  Bitmap Heap Scan on changegroup cg  (cost=332.95..23432.90 rows=17616 width=16) (actual time=1.728..68.845 rows=18091 loops=1)
         Recheck Cond: (issueid = 371928)
         Heap Blocks: exact=1606

и

   ->  Bitmap Heap Scan on changeitem ci  (cost=4439.94..87423.34 rows=205872 width=17) (actual time=65.291..4281.683 rows=208856 loops=1)
     Recheck Cond: ((field)::text = 'Flaky Count'::text)
     Heap Blocks: exact=25026

Postgres предсказывает, что второй запрос будет стоить в 4 раза больше, чем первый, несмотря на числоколичество строк, предсказанных более чем в 10 раз.

Еще одна странная вещь - реальное время запроса второго не только в 10 раз длиннее, но даже примерно в 80 раз.

Почему стоимость даже не линейна числустрок и почему время выше линейного числа строк?

...