Artikelen over SQL Server uit de praktijk
Executieplannen, indexen, performance tuning en Azure SQL — geschreven vanuit dertig jaar DBA-praktijk. Nieuwe artikelen verschijnen regelmatig.
Statistics Parser
Plak je STATISTICS IO/TIME-output en krijg direct duidelijke signalen — physical reads, worktables, scheve CPU/verstreken-tijd. Gratis, 100% in je browser, met optioneel een volledig rapport per e-mail.
Probeer de tool → -- parameter sniffing · PSP · nieuwParameter Sensitive Plans (PSP) versus Parameter Sniffing
SQL Server 2022's Parameter Sensitive Plans vervangen het ene gecachete plan door een dispatcher plus maximaal drie planvarianten, ingedeeld op cardinaliteit van de parameter. Getest op Posts.ParentId in de StackOverflow-database — een kolom waar enkele waarden duizenden matches hebben en de meeste bijna nul — krijgen de zeldzame en veelvoorkomende gevallen elk hun eigen plan, herkenbaar aan predicate_range- en QueryVariantID-markeringen in het executieplan. (Engelstalig)
Lees op dbaronald.nl → -- string functions · execution plansExecution Plans of all String Functions
Drieëndertig T-SQL stringfuncties — van ASCII tot UPPER — stuk voor stuk getest tegen de StackOverflow2010-database, met een gecorreleerde scalaire subquery die de cost-schatting van de optimizer net over de parallellism-drempel duwt zodat parallelle plannen zichtbaar worden. Voor elke functie het bijbehorende executieplan. (Engelstalig)
Lees op dbaronald.nl → -- table variables · temp tablesTable Variables versus #Temp Tables
Tabelvariabelen hebben geen statistieken? Een veelgehoorde aanname — maar op recente SQL Server-versies kunnen geïndexeerde tabelvariabelen wél degelijke statistieken hebben, zichtbaar in het executieplan. Vertrouw het plan, niet de vuistregel. (Engelstalig)
Lees op dbaronald.nl → -- partitioning · index maintenanceYou Want to Partition Your Huge Table.. Ok Fine.. Let's Go.
Een bestaande, enorme tabel partitioneren zonder size-of-data operatie: een lege partition function, twee metadata-only SWITCH-operaties rond een clustered index rebuild, en daarna stapsgewijze SPLIT RANGE-calls die seeken in plaats van scannen — Michael J. Swarts techniek in de praktijk. (Engelstalig)
Lees op dbaronald.nl → -- join order · execution plansWhy Join Order Can Make or Break Your Query Performance
Zeven varianten van dezelfde query op StackOverflow2013, alleen verschillend in join-volgorde en physical operator — één forceert een hashtabel over 2,46 miljoen rijen, een andere verspilt 87% van de runtime aan nested-loop iteraties, puur omdat de verkeerde kant build/outer werd. (Engelstalig)
Lees op dbaronald.nl → -- query plan · aiAI and Where Does Query Time Go? Using Claude's Query Plan Analysis Skill
Een scalaire functie verstopt waar de tijd van een query heen gaat — Claude's execution plan-analyse skill legt het bloot, inline herschrijven met STRING_AGG en een samengestelde index maken 'm weer snel, bevestigd door sp_BlitzCache en Performance Studio. (Engelstalig)
Lees op dbaronald.nl → -- query store · aiAutomate Executionplan Analysis by Skill and Query Store
Query's uit Query Store halen, actuele executieplannen genereren en die automatisch laten analyseren door Erik Darlings execution plan-skill voor Claude Code — met concrete performance-aanbevelingen als resultaat.
Lees op dbaronald.nl → -- ai · query tuningIs AI making an end to my job as a SQL Server query tuner?
Een praktijktest: Claude leest een executieplan, ziet een Index Spool die 613 keer wordt opgebouwd en adviseert de index die een query van 73 seconden naar 435 ms brengt. Wat blijft er over voor de menselijke tuner? (Engelstalig)
Lees op dbaronald.nl → -- query processing · serieCraig Freedman herlezen: de queryprocessor-blog die na twintig jaar nog klopt
Leeswijzer bij mijn tiendelige serie over Craig Freedmans klassieke query processing-blog (2006–2010) — elk concept opnieuw getest op moderne SQL Server, met echte executieplannen.
Lees artikel → -- index maintenance · bijgewerktIndexOptimize and additions to Ola Hallengren's dbo.CommandLog
Waarom een IndexOptimize-job ineens langer draait — en hoe je met een paar extra kolommen page count, fragmentatie, omvang en duur rechtstreeks uit de ExtendedInfo-XML van dbo.CommandLog haalt. (Engelstalig)
Lees op dbaronald.nl → -- performance tuningExecutieplannen lezen: waar kijk je het eerst naar?
Vijf checks waarmee je in de meeste plannen binnen een paar minuten de boosdoener vindt: dikke pijlen, onverwachte scans, key lookups, cardinality-afwijkingen en warnings.
Lees artikel → -- indexenIndex tuning: clustered, nonclustered en included columns
Hoe je de clustering key kiest, waarom kolomvolgorde alles is, wanneer INCLUDE loont en hoe je ongebruikte indexen opspoort en opruimt.
Lees artikel → -- performance tuningParameter sniffing: als één plan niet voor iedereen past
Waarom een stored procedure ineens traag wordt, hoe je het herkent in Query Store en welke vijf oplossingen wanneer passen.
Lees artikel →