2 KiB
2 KiB
ADR 001: Datenbank-Indexstrategie für Such- und Listenperformance
Status
Entwurf
Problem
Mit wachsender Datenmenge drohen langsame Listen-/Filterabfragen für Requests, Offers und Reviews. Die aktuelle Datenbankstruktur benötigt eine gezielte Indexstrategie zur Optimierung der Performance.
Lösung
Implementierung einer gezielten Indexstrategie für kritische Abfragepfade in den Datenbanktabellen.
Kritische Query-Pfade
1. Help Requests Feed
- Abfragen von Requests mit Filter nach Status, Erstellungsdatum, Requester-ID
- Beispielabfragen:
SELECT * FROM help_requests WHERE status = 'open' ORDER BY created_at DESC LIMIT 20; SELECT * FROM help_requests WHERE requester_id = ? ORDER BY created_at DESC;
2. Offers Historie
- Abfragen von Offers zu bestimmten Requests oder von bestimmten Helfern
- Beispielabfragen:
SELECT * FROM offers WHERE request_id = ? ORDER BY created_at DESC; SELECT * FROM offers WHERE helper_id = ? ORDER BY created_at DESC;
3. Reviews
- Abfragen von Reviews zu Deals, Benutzern oder Bewertungen
- Beispielabfragen:
SELECT * FROM reviews WHERE deal_id = ?; SELECT * FROM reviews WHERE reviewer_id = ?; SELECT * FROM reviews WHERE reviewee_id = ?;
Empfohlene Indexe
help_requests Tabelle
idx_status_created_at(status, created_at)idx_requester_id(requester_id)
offers Tabelle
idx_request_id_created_at(request_id, created_at DESC)idx_helper_id_created_at(helper_id, created_at DESC)
reviews Tabelle
idx_deal_id(deal_id)idx_reviewer_id(reviewer_id)idx_reviewee_id(reviewee_id)
Performance-Kriterien
- Jede kritische Abfrage hat eine begründete Index-Empfehlung
- Performance-Regressionsrisiko für Listenansichten sinkt nachvollziehbar
- EXPLAIN-basierte Erfolgskriterien für jede Kernabfrage festgelegt
Implementation
Die Indexe werden in separaten Migrationen implementiert, um die Performance der bestehenden Datenbankoperationen nicht zu beeinträchtigen.