fix(#29): Implementiere Datenbank-Indexstrategie für Such- und Listenperformance
Some checks are pending
Docker Test / test (push) Waiting to run
Some checks are pending
Docker Test / test (push) Waiting to run
This commit is contained in:
parent
c904641677
commit
fa0e9356d3
2 changed files with 80 additions and 0 deletions
15
backend/migrations/003_index_strategy.sql
Normal file
15
backend/migrations/003_index_strategy.sql
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
-- Migration: 003_index_strategy
|
||||
-- Description: Implementierung der Indexstrategie für Such- und Listenperformance
|
||||
|
||||
-- Index für help_requests Tabelle
|
||||
CREATE INDEX idx_status_created_at ON help_requests(status, created_at DESC);
|
||||
CREATE INDEX idx_requester_id ON help_requests(requester_id);
|
||||
|
||||
-- Index für offers Tabelle
|
||||
CREATE INDEX idx_request_id_created_at ON offers(request_id, created_at DESC);
|
||||
CREATE INDEX idx_helper_id_created_at ON offers(helper_id, created_at DESC);
|
||||
|
||||
-- Index für reviews Tabelle
|
||||
CREATE INDEX idx_deal_id ON reviews(deal_id);
|
||||
CREATE INDEX idx_reviewer_id ON reviews(reviewer_id);
|
||||
CREATE INDEX idx_reviewee_id ON reviews(reviewee_id);
|
||||
65
docs/adr/001-database-index-strategy.md
Normal file
65
docs/adr/001-database-index-strategy.md
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
# 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:
|
||||
```sql
|
||||
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:
|
||||
```sql
|
||||
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:
|
||||
```sql
|
||||
SELECT * FROM reviews WHERE deal_id = ?;
|
||||
SELECT * FROM reviews WHERE reviewer_id = ?;
|
||||
SELECT * FROM reviews WHERE reviewee_id = ?;
|
||||
```
|
||||
|
||||
## Empfohlene Indexe
|
||||
|
||||
### help_requests Tabelle
|
||||
1. `idx_status_created_at` (status, created_at)
|
||||
2. `idx_requester_id` (requester_id)
|
||||
|
||||
### offers Tabelle
|
||||
1. `idx_request_id_created_at` (request_id, created_at DESC)
|
||||
2. `idx_helper_id_created_at` (helper_id, created_at DESC)
|
||||
|
||||
### reviews Tabelle
|
||||
1. `idx_deal_id` (deal_id)
|
||||
2. `idx_reviewer_id` (reviewer_id)
|
||||
3. `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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue