From a51afcea115af84cc5f0a7a6ba09ccf50f36cfb3 Mon Sep 17 00:00:00 2001 From: Thomas Honeyman Date: Tue, 21 Jul 2026 23:13:42 +0000 Subject: [PATCH] Add indexes for job queries Amp-Thread-ID: https://ampcode.com/threads/T-019f86f1-815e-70c5-bfc5-2e12ae6ba5d2 Co-authored-by: Thomas Honeyman --- ...dd_indexes_for_non_primary_key_queries.sql | 25 +++++++++++++++++++ db/schema.sql | 12 ++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 db/migrations/20260721231201_add_indexes_for_non_primary_key_queries.sql diff --git a/db/migrations/20260721231201_add_indexes_for_non_primary_key_queries.sql b/db/migrations/20260721231201_add_indexes_for_non_primary_key_queries.sql new file mode 100644 index 000000000..09a350223 --- /dev/null +++ b/db/migrations/20260721231201_add_indexes_for_non_primary_key_queries.sql @@ -0,0 +1,25 @@ +-- migrate:up + +-- For duplicate detection in publish jobs +CREATE INDEX IF NOT EXISTS idx_publish_jobs_name_version +ON publish_jobs (packageName, packageVersion); + +-- For duplicate detection in unpublish jobs +CREATE INDEX IF NOT EXISTS idx_unpublish_jobs_name_version +ON unpublish_jobs (packageName, packageVersion); + +-- For duplicate detection in transfer jobs +CREATE INDEX IF NOT EXISTS idx_transfer_jobs_name +ON transfer_jobs (packageName); + +-- For job selection performance +CREATE INDEX IF NOT EXISTS idx_job_info_pending +ON job_info (createdAt) +WHERE finishedAt IS NULL AND startedAt IS NULL; + +-- migrate:down + +DROP INDEX IF EXISTS idx_publish_jobs_name_version; +DROP INDEX IF EXISTS idx_unpublish_jobs_name_version; +DROP INDEX IF EXISTS idx_transfer_jobs_name; +DROP INDEX IF EXISTS idx_job_info_pending; diff --git a/db/schema.sql b/db/schema.sql index c2d5cc1af..682614741 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -54,9 +54,19 @@ CREATE TABLE logs ( message TEXT NOT NULL, timestamp TEXT NOT NULL ); +CREATE INDEX idx_publish_jobs_name_version +ON publish_jobs (packageName, packageVersion); +CREATE INDEX idx_unpublish_jobs_name_version +ON unpublish_jobs (packageName, packageVersion); +CREATE INDEX idx_transfer_jobs_name +ON transfer_jobs (packageName); +CREATE INDEX idx_job_info_pending +ON job_info (createdAt) +WHERE finishedAt IS NULL AND startedAt IS NULL; -- Dbmate schema migrations INSERT INTO "schema_migrations" (version) VALUES ('20230711143615'), ('20230711143803'), ('20240914170550'), - ('20240914171030'); + ('20240914171030'), + ('20260721231201');