presseportale/resources/views
Kevin Adametz 580c918ad3 Perf: Status-Counts der PM-Uebersicht via UNION statt OR-GROUP-BY
Die nach Status gruppierte Zaehlung lief ueber accessibleBy() (user_id OR
company_id IN sub). Der OR-Ausdruck zwingt MySQL zu Full-Scans (EXPLAIN:
companies type=ALL, press_releases Full-Index-Scan ueber 124k Zeilen) und
war mit ~500-950ms der groesste Einzelposten der Seite.

Neue PressRelease::accessibleStatusCountsFor(User, ?Closure): kombiniert
Autor- und Firmen-Zweig als indexfreundliche UNION-Subquery (per PK
dedupliziert) und gruppiert darueber. Im Benchmark ~2,5x schneller bei
identischer Verteilung. Der Firmen-Filter der Uebersicht wird als geteilte
Closure auf Counts UND Liste angewandt (garantiert deckungsgleiche Filterung).

Gesamtmessung /admin/me/press-releases (User 14016, 26.772 Firmen / 20.830
PMs): Query-Pfad ~2850ms -> ~740ms warm; hydratisierte Company-Models 24.

Tests: accessibleStatusCountsFor zaehlt Autor+Firma je einmal (UNION-Dedup)
und wendet Zusatz-Constraints auf beide Zweige an.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 13:55:13 +00:00
..
admin Optimierung Phase 1: Aufraeumen / toter Code 2026-06-19 08:27:12 +00:00
components Optimierung 2.8: <x-portal.pr-presubmit-check> Blade-Component 2026-06-19 10:16:21 +00:00
emails 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
flux/navlist first commit 2025-10-20 17:53:02 +02:00
layouts 22-05-2026 Optimierung der User und Admin Panels 2026-05-22 11:18:59 +02:00
livewire Perf: Status-Counts der PM-Uebersicht via UNION statt OR-GROUP-BY 2026-06-30 13:55:13 +00:00
partials Responsive-Härtung: Seiten-Header, Kontextleiste, Stat-Cards 2026-06-12 14:08:08 +00:00
web Preise-Seite: dynamische Tarif-Vorteile aus dem Plan anzeigen 2026-06-18 16:37:01 +00:00
press-release-preview-error.blade.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
press-release-preview.blade.php create PM v0.5 2026-05-20 19:14:39 +02:00