From 81cc04df61154e13fd538339b7593ba1c059aac3 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sat, 10 Jun 2023 01:06:05 -0700 Subject: [PATCH] Only adjust cost if random_page_cost is higher than seq_page_cost --- src/ivfflat.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/ivfflat.c b/src/ivfflat.c index 29ddabb..45064c3 100644 --- a/src/ivfflat.c +++ b/src/ivfflat.c @@ -118,19 +118,22 @@ ivfflatcostestimate(PlannerInfo *root, IndexPath *path, double loop_count, get_tablespace_page_costs(path->indexinfo->reltablespace, NULL, &spc_seq_page_cost); - /* Adjust cost if needed since TOAST not included in seq scan cost */ - if (costs.numIndexPages > path->indexinfo->rel->pages && ratio < 0.5) + if (costs.spc_random_page_cost > spc_seq_page_cost) { - /* Change page cost from random to sequential */ - startupCost -= costs.numIndexPages * (costs.spc_random_page_cost - spc_seq_page_cost); + /* Adjust cost if needed since TOAST not included in seq scan cost */ + if (costs.numIndexPages > path->indexinfo->rel->pages && ratio < 0.5) + { + /* Change page cost from random to sequential */ + startupCost -= costs.numIndexPages * (costs.spc_random_page_cost - spc_seq_page_cost); - /* Remove cost of extra pages */ - startupCost -= (costs.numIndexPages - path->indexinfo->rel->pages) * spc_seq_page_cost; - } - else if (ratio < 0.5) - { - /* Change some page cost from random to sequential */ - startupCost -= 0.5 * costs.numIndexPages * (costs.spc_random_page_cost - spc_seq_page_cost); + /* Remove cost of extra pages */ + startupCost -= (costs.numIndexPages - path->indexinfo->rel->pages) * spc_seq_page_cost; + } + else if (ratio < 0.5) + { + /* Change some page cost from random to sequential */ + startupCost -= 0.5 * costs.numIndexPages * (costs.spc_random_page_cost - spc_seq_page_cost); + } } /*