From 8b113ee1067be3246fbcdc77e9c7b50592aea783 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 6 Jan 2026 16:09:26 +0000 Subject: [PATCH] trying to ooptimise the measures table --- .../scenario/[scenarioId]/measures/route.ts | 33 +++++++++---------- .../2026_01_06_recommendation_cover.sql | 12 +++++++ 2 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 src/app/db/migrations/2026_01_06_recommendation_cover.sql diff --git a/src/app/api/portfolio/[portfolioId]/scenario/[scenarioId]/measures/route.ts b/src/app/api/portfolio/[portfolioId]/scenario/[scenarioId]/measures/route.ts index 8f10775..dccf47d 100644 --- a/src/app/api/portfolio/[portfolioId]/scenario/[scenarioId]/measures/route.ts +++ b/src/app/api/portfolio/[portfolioId]/scenario/[scenarioId]/measures/route.ts @@ -83,26 +83,23 @@ export async function GET( COUNT(DISTINCT r.property_id)::int AS homes_count, SUM(r.estimated_cost)::float AS total_cost, AVG(r.estimated_cost)::float AS average_cost - FROM ( - SELECT DISTINCT ON (p.property_id) - p.id, - p.property_id - FROM plan p - WHERE p.portfolio_id = ${pid} - AND p.scenario_id = ${sid} - ORDER BY p.property_id, p.created_at DESC - ) lp - JOIN plan_recommendations pr - ON pr.plan_id = lp.id - JOIN recommendation r - ON r.id = pr.recommendation_id - LEFT JOIN recommendation_materials rm - ON rm.recommendation_id = r.id - LEFT JOIN material m - ON m.id = rm.material_id - AND m.is_active = true + FROM recommendation r WHERE r.default = true AND r.already_installed = false + AND EXISTS ( + SELECT 1 + FROM ( + SELECT DISTINCT ON (p.property_id) + p.id + FROM plan p + WHERE p.portfolio_id = ${pid} + AND p.scenario_id = ${sid} + ORDER BY p.property_id, p.created_at DESC + ) lp + JOIN plan_recommendations pr + ON pr.plan_id = lp.id + WHERE pr.recommendation_id = r.id + ) GROUP BY r.measure_type, r.type diff --git a/src/app/db/migrations/2026_01_06_recommendation_cover.sql b/src/app/db/migrations/2026_01_06_recommendation_cover.sql new file mode 100644 index 0000000..aff088d --- /dev/null +++ b/src/app/db/migrations/2026_01_06_recommendation_cover.sql @@ -0,0 +1,12 @@ +-- migrations/2026_01_06_recommendation_cover.sql + +CREATE INDEX CONCURRENTLY idx_recommendation_active_cover +ON recommendation ( + id, + property_id, + measure_type, + type +) +INCLUDE (estimated_cost) +WHERE default = true + AND already_installed = false;