diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index 6476fda66d52706b19c0c0492c7e34bd784709ae..756ce18a156850198432e351e81d246b63903c8e 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -716,8 +716,8 @@ cost_bitmap_heap_scan(Path *path, PlannerInfo *root, RelOptInfo *baserel, * cost per page. */ if (pages_fetched >= 2.0) - cost_per_page = random_page_cost - - (random_page_cost - seq_page_cost) * sqrt(pages_fetched / T); + cost_per_page = seq_page_cost * + pow(random_page_cost / seq_page_cost, 1 - sqrt(pages_fetched / T)); else cost_per_page = random_page_cost; @@ -817,8 +817,8 @@ cost_bitmap_appendonly_scan(Path *path, PlannerInfo *root, RelOptInfo *baserel, * cost per page. */ if (pages_fetched >= 2.0) - cost_per_page = random_page_cost - - (random_page_cost - seq_page_cost) * sqrt(pages_fetched / T); + cost_per_page = seq_page_cost * + pow(random_page_cost / seq_page_cost, 1 - sqrt(pages_fetched / T)); else cost_per_page = random_page_cost;