Resources | Cegal

Hvordan én SQL Query satte en kæp i hjulet – værdien af et Health Check

Skrevet af Redaktionen | 30-09-2025 08:17:52

Forestil dig at spænde en racerbil for en gammel trailer. Du har masser af hestekræfter og tophastighed, men hvis traileren ikke kan følge med, kommer du ikke særlig langt. Sådan beskrev vores konsulent situationen, da han kiggede under motorhjelmen på en Microsoft SQL Server hos en kunde.

Kæppen i hjulet

Når vi laver et Health Check, kigger vi ikke kun på CPU og hukommelse, vi går helt ned i de enkelte queries og analyserer, hvordan de interagerer med databasen. Det handler om at forstå, hvordan data bliver hentet, og hvilke mønstre der gentager sig. Her var det en enkelt forespørgsel, der trak ualmindeligt meget på ressourcerne. 
 
Midt i analysen stak én forespørgsel ud: 
Den kørte 100 gange i minuttet og skulle finde den nyeste redigeringsdato i tabellen PAT_CASE, som indeholder over 1,3 millioner rækker. 

Forespørgslen så sådan ud: 

SQL 

SELECT TOP 1 CASE_LAST_EDIT_DATE FROM dbo.PAT_CASE ORDER BY CASE_LAST_EDIT_DATE DESC 

Fordi der ikke var et indeks på kolonnen CASE_LAST_EDIT_DATE, blev SQL Server nødt til at læse hele tabellen hver gang – en såkaldt clustered index scan. 

Ved hjælp af SET STATISTICS IO ON kunne konsulenten dokumentere problemet: 

  • 56.245 logical reads
     
  • 1.305.900 rækker scannet

  • Query cost: 59% af hele batchen

Specialisten forklarer: Det svarer til at lede efter én bog i et bibliotek ved at bladre igennem hver eneste hylde – hver gang nogen spørger. 

Et indeks, der gjorde stor forskel

Indekser fungerer som genveje i databasen. Uden dem skal SQL Server gennemsøge hele tabellen, hvilket er langsomt og ressourcekrævende. Ved at tilføje et non-clustered index på den relevante kolonne, kan serveren springe direkte til den ønskede information. Det er en af de mest effektive måder at optimere performance. Alligevel overses det ofte.

Databasespecialisten forklarer: Ved at tilføje et non-clustered index på kolonnen CASE_LAST_EDIT_DATE blev søgningen markant mere effektiv. Det kan sammenlignes med at sætte en stregkode på hver bog og sortere dem efter dato. På den måde kunne SQL Server slå direkte op i indekset i stedet for at gennemsøge hele tabellen.

Resultatet blev

  • Forespørgslen gik fra 56.245 reads til bare 3

  • Systemet blev mærkbart hurtigere

  • Belastningen på serveren faldt dramatisk 

Nu kan racerbilen køre

Det her handler ikke kun om teknik – det handler om værdi:

  • Hurtigere svartider for brugerne

  • Mindre belastning på infrastrukturen

  • Bedre stabilitet og skalerbarhed

Når vi taler med kunder, handler det sjældent kun om bits og bytes. Det handler om, hvordan tekniske beslutninger påvirker forretningen. Et langsomt system kan føre til frustrerede brugere, tabt produktivitet og i sidste ende økonomiske tab. Derfor er det vigtigt at tænke performance som en strategisk investering – ikke bare en teknisk nødvendighed.

Dorte Møller - Lead Customer Success Manager.

Og vigtigst af alt: det viser, hvordan små tekniske indgreb kan have stor effekt – hvis man ved, hvor man skal kigge.

Er det tid til et Health Check? 

Et Health Check er ikke kun for dem, der har akutte problemer. Det er også en måde at sikre, at systemet er klar og robust til fremtiden. Vi ser ofte, at små justeringer kan give store forbedringer – og det kræver ikke nødvendigvis store investeringer. Hos Cegal kombinerer vi teknisk ekspertise med forretningsforståelse, så du får løsninger, der virker i praksis. 

Har du også en racerbil, der trækker en trailer? 
Vi laver gerne et Health Check på alle førende databaseteknologier og varianter.