From 8be217a28acd03cbb0dcc9ee7ccfc2570f8ca0e2 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 +++++ database/tests/schema/schema.sql | 3 ++- 3 files changed, 9 insertions(+), 3 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 62f2822dc..b857ef7b8 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 000000000..ed1f3b253 --- /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; diff --git a/database/tests/schema/schema.sql b/database/tests/schema/schema.sql index 0b4ecd536..97b1bbf99 100644 --- a/database/tests/schema/schema.sql +++ b/database/tests/schema/schema.sql @@ -354,7 +354,8 @@ select indexes_are('package_category', array[ 'package_category_pkey' ]); select indexes_are('package_views', array[ - 'package_views_package_id_version_day_key' + 'package_views_package_id_version_day_key', + 'package_views_year_month_idx' ]); select indexes_are('package__maintainer', array[ 'package__maintainer_pkey'