Improve performance of the reverse dependencies endpoint #3655
Labels
A-backend ⚙️
C-internal 🔧
Category: Nonessential work that would make the codebase more consistent or clear
Me and Justin spent some time a couple days ago trying to figure out why the reverse dependencies endpoint is so slow for crates with a large number of reverse dependencies. This is the
EXPLAIN ANALYZE
of that query.The goal of the query is to return all crates whose last version depends on the current crate. As the latest version is not stored anywhere the query is doing a subquery that sorts all the versions of each crate by their semver, which is really slow.
We should denormalize the latest version ID (semver-wise) in the crates table, and change the query to remove the subquery. After removing the subquery the query should be small enough to be converted to Diesel. Ideally denormalizing the latest version ID and updating the query should be done in separate PRs.
The text was updated successfully, but these errors were encountered: