Skip to content

Commit 540de41

Browse files
committed
fix performance regression in all releases-views
1 parent 8966c52 commit 540de41

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/db/migrate.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,17 @@ pub fn migrate(version: Option<Version>, conn: &mut Client) -> CratesfyiResult<(
602602
ALTER release_time TYPE timestamp USING release_time AT TIME ZONE 'UTC';
603603
",
604604
),
605+
migration!(
606+
context,
607+
26,
608+
"create index for crates.latest_version_id",
609+
// upgrade
610+
"
611+
CREATE INDEX crates_latest_version_idx ON crates (latest_version_id);
612+
ANALYZE crates;
613+
",
614+
"DROP INDEX crates_latest_version_idx;",
615+
),
605616
];
606617

607618
for migration in migrations {

src/web/releases.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,10 @@ pub(crate) fn get_releases(conn: &mut Client, page: i64, limit: i64, order: Orde
8484
releases.rustdoc_status,
8585
github_repos.stars
8686
FROM crates
87-
INNER JOIN releases ON crates.id = releases.crate_id
87+
INNER JOIN releases ON crates.latest_version_id = releases.id
8888
LEFT JOIN github_repos ON releases.github_repo = github_repos.id
8989
WHERE
9090
((NOT $3) OR (releases.build_status = FALSE AND releases.is_library = TRUE))
91-
AND crates.latest_version_id = releases.id
9291
ORDER BY {} DESC NULLS LAST
9392
LIMIT $1 OFFSET $2",
9493
ordering,

0 commit comments

Comments
 (0)