Files
alpenwerk-hr/lib
Andrei Laas 499d400fe1
Some checks failed
CI / Lint, Typen, Tests, Build (push) Successful in 11m7s
CI / Migrationen auf leerer Datenbank (push) Has been cancelled
Die Berichtslinie einmal ausrechnen statt zweimal
Die Akte holte Vorgesetzte und direkte Berichte in zwei Teilabfragen, je
eine mit eigenem Filter -- in der Annahme, der Filter schraenke die
Funktion ein. Tut er nicht. om_reporting_lines traegt ein `with
recursive` im Koerper und laesst sich deshalb nicht einbetten; sie rechnet
jedes Mal alle Zeilen aus, und der Filter wirft sie danach weg.

Auf dem Server gemessen:

  explain analyze select * from om_reporting_lines(current_date)
    where employee_id = ...;
  -> Rows Removed by Filter: 783, Execution Time: 69 ms

Und ohne Filter dieselben 60 ms. Zwei Filter hiessen also zweimal
dieselbe Rechnung, rund 120 ms je Aufruf der Akte -- der groesste
Einzelposten der Seite.

Jetzt ein Aufruf, und die Auswahl trifft der Aufrufer. Dafuer wandern
einmal alle Zeilen herueber statt neun; ueber eine Verbindung im selben
Netz kostet das den Bruchteil dessen, was die zweite Rechnung kostete.

Der Kommentar, der das Gegenteil behauptete, ist durch die Messung
ersetzt.
2026-09-24 11:39:24 +02:00
..
2026-09-07 10:43:22 +02:00
2026-09-07 10:43:22 +02:00
2026-08-16 19:57:09 +02:00
2026-09-07 10:43:22 +02:00
2026-08-21 11:02:40 +02:00
2026-09-07 10:43:22 +02:00
2026-08-16 19:57:09 +02:00