-- CreateIndex -- PostgreSQL legt fuer eine Fremdschluessel-Spalte KEINEN Index an (anders als -- MySQL/InnoDB, das ihn automatisch anlegt). "order_items" ist die am -- schnellsten wachsende Tabelle des Shops — je Bestellung eine Zeile pro -- Position, und geloescht wird dort nichts. Ohne diesen Index laeuft jede -- Abfrage nach productId als vollstaendiger Tabellenscan. -- -- Zwei Stellen vertragen das nicht: -- -- 1. hasCustomerPurchased (src/lib/reviews.ts) — der Nachweis -- "verifizierter Kauf". Er laeuft bei JEDEM Aufruf einer Produktseite -- durch eine angemeldete Kundschaft, also auf dem meistbesuchten -- Seitentyp ueberhaupt. -- 2. Das Loeschen eines Produkts im Admin-Bereich: die product-Relation ist -- "onDelete: Restrict", die Datenbank muss also pruefen, ob noch -- Positionen daran haengen. CREATE INDEX "order_items_productId_idx" ON "order_items"("productId"); -- CreateIndex -- Gleicher Grund: die batch-Relation ist ebenfalls "onDelete: Restrict". Das -- Loeschen einer Charge im Admin-Bereich prueft gegen dieselbe Tabelle. CREATE INDEX "order_items_batchId_idx" ON "order_items"("batchId");