umbau 1.0
This commit is contained in:
22
app/db/migrations/0020_session_user_ended_index.sql
Normal file
22
app/db/migrations/0020_session_user_ended_index.sql
Normal file
@ -0,0 +1,22 @@
|
||||
-- Migration 0020: Index fuer die eigene-Sitzungen-Abfrage (Teil F.3.6,
|
||||
-- Umsetzungsauftrag_Sonnet5.md): GET /catalog/sessions (app/catalog/
|
||||
-- routes.py) filtert immer nach user_id UND (im Standardfall
|
||||
-- active_only=true) zusaetzlich nach ended_at IS NULL.
|
||||
--
|
||||
-- Bisher existierte nur idx_sessions_user (user_id allein,
|
||||
-- app/db/migrations/0001_initial.sql:107) -- fuer eine wachsende
|
||||
-- sessions-Tabelle waere "meine noch offenen Sitzungen" damit ein
|
||||
-- Index-Scan ueber ALLE Sitzungen dieses Benutzers mit anschliessendem
|
||||
-- Filter auf ended_at, statt direkt auf die (typischerweise sehr kleine)
|
||||
-- Teilmenge der offenen Sitzungen zuzugreifen.
|
||||
--
|
||||
-- Ein zusammengesetzter Index (user_id, ended_at) deckt per
|
||||
-- SQLite-Index-Praefix-Regel sowohl "alle meine Sitzungen" (user_id
|
||||
-- allein) als auch "meine offenen Sitzungen" (user_id + ended_at) ab und
|
||||
-- macht idx_sessions_user damit redundant -- bewusst NICHT geloescht
|
||||
-- (Projektkonvention: Indizes/Tabellen werden beim Rueckbau nicht
|
||||
-- gedroppt, siehe 0019_retire_direct_role_grants.sql; ausserdem nutzen
|
||||
-- andere Abfragen im Adminbereich, z.B. GET /admin/sessions, weiterhin
|
||||
-- ausschliesslich user_id ueber JOINs, nicht ueber diesen Index).
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_sessions_user_ended ON sessions(user_id, ended_at);
|
||||
Reference in New Issue
Block a user