Backend: Denormalize name and description in Ci::Catalog::Listing
Summary
The intention in this issue is to improve the query plan performance in Ci::Catalog::Listing.
Denormalized columns are necessary for query performance. Details can be found here: !134200 (comment 1604567481).
Proposal
Ref !134517 (comment 1609987074):
- Add denormalized columns
name
anddescription
to thecatalog_resources
table. Include trigram indexes on both columns. - Add a migration to backfill the data. Add logic to keep the columns in sync with the
projects
table when:
- A project is marked as a catalog resource.
- The project name/description is updated.
- Update the
name
sort filter queries in theCi::Catalog
model to use the new denormalized column. - Update the search query plan in
Ci::Catalog::Listing
from !134517 (diffs) to use the new denormalized columns.
MR Implementation
Performance Implementation for 'All resources'
Edited by Leaminn Ma