From 04d4a19c9d22e2066fdd99cbca2086718e333326 Mon Sep 17 00:00:00 2001 From: shrey-berri <333930225+shrey-berri@users.noreply.github.com> Date: Sat, 26 Sep 2026 17:59:43 +0000 Subject: [PATCH] perf(schema): index LiteLLM_SpendLogs by session for the session view Add (session_id, api_key, startTime DESC, request_id) so checking whether a spend log row is the newest row of its session is one index probe. The migration builds it CONCURRENTLY so spend log inserts keep flowing during a rolling deploy. --- .../migration.sql | 2 ++ litellm-proxy-extras/litellm_proxy_extras/schema.prisma | 1 + litellm/proxy/schema.prisma | 1 + schema.prisma | 1 + 4 files changed, 5 insertions(+) create mode 100644 litellm-proxy-extras/litellm_proxy_extras/migrations/20260924204413_add_spend_logs_session_head_index/migration.sql diff --git a/litellm-proxy-extras/litellm_proxy_extras/migrations/20260924204413_add_spend_logs_session_head_index/migration.sql b/litellm-proxy-extras/litellm_proxy_extras/migrations/20260924204413_add_spend_logs_session_head_index/migration.sql new file mode 100644 index 00000000000..da26297b59c --- /dev/null +++ b/litellm-proxy-extras/litellm_proxy_extras/migrations/20260924204413_add_spend_logs_session_head_index/migration.sql @@ -0,0 +1,2 @@ +-- CreateIndex (CONCURRENTLY): keep this a single statement so Prisma Migrate applies it outside a transaction +CREATE INDEX CONCURRENTLY IF NOT EXISTS "LiteLLM_SpendLogs_session_id_api_key_startTime_request_id_idx" ON "LiteLLM_SpendLogs"("session_id", "api_key", "startTime" DESC, "request_id"); diff --git a/litellm-proxy-extras/litellm_proxy_extras/schema.prisma b/litellm-proxy-extras/litellm_proxy_extras/schema.prisma index 85996430bc5..9429cbabc75 100644 --- a/litellm-proxy-extras/litellm_proxy_extras/schema.prisma +++ b/litellm-proxy-extras/litellm_proxy_extras/schema.prisma @@ -684,6 +684,7 @@ model LiteLLM_SpendLogs { @@index([session_id]) @@index([litellm_call_id]) @@index([api_key, startTime]) + @@index([session_id, api_key, startTime(sort: Desc), request_id]) } model LiteLLM_BudgetWindowSpend { diff --git a/litellm/proxy/schema.prisma b/litellm/proxy/schema.prisma index 85996430bc5..9429cbabc75 100644 --- a/litellm/proxy/schema.prisma +++ b/litellm/proxy/schema.prisma @@ -684,6 +684,7 @@ model LiteLLM_SpendLogs { @@index([session_id]) @@index([litellm_call_id]) @@index([api_key, startTime]) + @@index([session_id, api_key, startTime(sort: Desc), request_id]) } model LiteLLM_BudgetWindowSpend { diff --git a/schema.prisma b/schema.prisma index 85996430bc5..9429cbabc75 100644 --- a/schema.prisma +++ b/schema.prisma @@ -684,6 +684,7 @@ model LiteLLM_SpendLogs { @@index([session_id]) @@index([litellm_call_id]) @@index([api_key, startTime]) + @@index([session_id, api_key, startTime(sort: Desc), request_id]) } model LiteLLM_BudgetWindowSpend {