From d16fa0fcaa7cb5a95884ce08c00b38e9ced49686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Casta=C3=B1o=20Arteaga?= Date: Tue, 19 Dec 2023 10:40:30 +0100 Subject: [PATCH] Improve get stats db function performance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sergio CastaƱo Arteaga --- database/migrations/functions/stats/get_stats.sql | 4 ++-- .../migrations/schema/052_package_views_year_month_index.sql | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 database/migrations/schema/052_package_views_year_month_index.sql diff --git a/database/migrations/functions/stats/get_stats.sql b/database/migrations/functions/stats/get_stats.sql index 62f2822dcf..b857ef7b8b 100644 --- a/database/migrations/functions/stats/get_stats.sql +++ b/database/migrations/functions/stats/get_stats.sql @@ -78,8 +78,8 @@ returns setof json as $$ get_package_summary(jsonb_build_object('package_id', package_id)) as package, sum(total) as total from package_views - where date_trunc('year', day) = date_trunc('year', current_date) - and date_trunc('month', day) = date_trunc('month', current_date) + where date_trunc('year', day::timestamp) = date_trunc('year', current_timestamp) + and date_trunc('month', day::timestamp) = date_trunc('month', current_timestamp) and package_id is not null group by package_id order by total desc diff --git a/database/migrations/schema/052_package_views_year_month_index.sql b/database/migrations/schema/052_package_views_year_month_index.sql new file mode 100644 index 0000000000..ed1f3b2539 --- /dev/null +++ b/database/migrations/schema/052_package_views_year_month_index.sql @@ -0,0 +1,5 @@ +create index if not exists package_views_year_month_idx on package_views (date_trunc('year', day::timestamp), date_trunc('month', day::timestamp)); + +---- create above / drop below ---- + +drop index if exists package_views_year_month_idx;