/* sql tips */

Artikelen over SQL Server uit de praktijk

Executieplannen, indexen, performance tuning en Azure SQL — geschreven vanuit dertig jaar DBA-praktijk. Nieuwe artikelen verschijnen regelmatig.

-- gratis community tool TOOL

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 · nieuw

Parameter 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 plans

Execution 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 tables

Table 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 maintenance

You 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 plans

Why 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 · ai

AI 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 · ai

Automate 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 tuning

Is 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 · serie

Craig 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 · bijgewerkt

IndexOptimize 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 tuning

Executieplannen 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 →
-- indexen

Index 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 tuning

Parameter 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 →