From 21402c7aaa02ed0af4be0dae10bcfde7bb9e4e20 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 8 Sep 2025 13:13:12 +0300 Subject: [PATCH] perf(coderd/database): optimize GetAPIKeysLastUsedAfter (#19725) This change adds a support-index for `GetAPIKeysLastUsedAfter`. On dogfood (24h): called 4.4k times, 380ms average. Change for tested time range: `170ms` -> `3.3ms`. --- coderd/database/dump.sql | 4 ++++ .../000365_add_index_for_getapikeyslastusedafter.down.sql | 1 + .../000365_add_index_for_getapikeyslastusedafter.up.sql | 2 ++ 3 files changed, 7 insertions(+) create mode 100644 coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.down.sql create mode 100644 coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.up.sql diff --git a/coderd/database/dump.sql b/coderd/database/dump.sql index 48c9b4cc7b..80ee328e98 100644 --- a/coderd/database/dump.sql +++ b/coderd/database/dump.sql @@ -2861,6 +2861,10 @@ ALTER TABLE ONLY workspace_resources ALTER TABLE ONLY workspaces ADD CONSTRAINT workspaces_pkey PRIMARY KEY (id); +CREATE INDEX api_keys_last_used_idx ON api_keys USING btree (last_used DESC); + +COMMENT ON INDEX api_keys_last_used_idx IS 'Index for optimizing api_keys queries filtering by last_used'; + CREATE INDEX idx_agent_stats_created_at ON workspace_agent_stats USING btree (created_at); CREATE INDEX idx_agent_stats_user_id ON workspace_agent_stats USING btree (user_id); diff --git a/coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.down.sql b/coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.down.sql new file mode 100644 index 0000000000..99cd9f241d --- /dev/null +++ b/coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.down.sql @@ -0,0 +1 @@ +DROP INDEX api_keys_last_used_idx; diff --git a/coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.up.sql b/coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.up.sql new file mode 100644 index 0000000000..8284b9c3e7 --- /dev/null +++ b/coderd/database/migrations/000365_add_index_for_getapikeyslastusedafter.up.sql @@ -0,0 +1,2 @@ +CREATE INDEX api_keys_last_used_idx ON api_keys (last_used DESC); +COMMENT ON INDEX api_keys_last_used_idx IS 'Index for optimizing api_keys queries filtering by last_used';