SQL Server
Indici, partizioni, piani di esecuzione e la realtà quotidiana del T-SQL su tabelle grandi.
-
Lezione 1
Cos'è davvero SQL Server, e perché dovrebbe interessarti
SQL Server in parole semplici: cos'è il prodotto, le edizioni, le trappole del licensing, e quale installare oggi sul tuo portatile.
-
Lezione 2
Installare SQL Server e connettersi con SSMS
Developer Edition su Windows, Docker su Mac o Linux, e come scegliere tra SSMS e Azure Data Studio. Il setup da 20 minuti che userai per tutto il corso.
-
Lezione 3
Database, schema, tabelle: le matrioske
Lo spazio dei nomi a tre livelli che SQL Server usa per organizzare tutto, a cosa serve ogni livello, e perché dbo non è davvero tuo amico.
-
Lezione 4
Tipi di dato: la differenza tra VARCHAR(50) e una causa legale
VARCHAR vs NVARCHAR, DATETIME vs DATETIME2, DECIMAL vs FLOAT, e le conseguenze sorprendentemente costose dell'essere superficiali sui tipi di dato in SQL Server.
-
Lezione 5
CREATE, ALTER, DROP: fare e rompere le tabelle
Le basi del DDL, i pattern IF EXISTS, gli script idempotenti, e l'esercizio 'oh no ho droppato la prod'. Più come cambiare una colonna senza rompere l'app.
-
Lezione 6
SELECT: fare domande senza piangere
Proiezione, alias, il segreto dell'ordine logico delle query che nessuno spiega ai principianti, e perché SELECT * è un odore professionale. Costruito attorno ai dati degli ordini di Runehold.
-
Lezione 7
WHERE, NULL, e perché i tuoi filtri mentono
Logica a tre valori, IS NULL contro = NULL, ISNULL contro COALESCE, e il bug silenzioso che ogni sviluppatore scrive una volta. Con esempi dal customer-support di Runehold.
-
Lezione 8
ORDER BY, TOP, e OFFSET/FETCH
Ordinamento, paginazione, TIES, ordinamenti stabili, e l'unica cosa che tutti sbagliano quando provano per la prima volta a fare 'top N righe per gruppo'.
-
Lezione 9
JOIN: l'unico diagramma che ti serve
INNER, LEFT, RIGHT, FULL, CROSS. Eresia del diagramma di Venn. Semi-join, anti-join, e la differenza tra un predicato di JOIN e un filtro WHERE.
-
Lezione 10
GROUP BY, HAVING, e aggregati
SUM, COUNT, AVG, aggregati DISTINCT, HAVING contro WHERE, e scrivere le query KPI che ogni business esegue davvero. Ricavi, AOV, CAC, LTV spiegati in SQL.
-
Lezione 11
Subquery vs CTE: quando usare cosa
Subquery inline, derived table, sottoquery correlate e CTE. La regola della leggibilità, il mito del 'è lo stesso piano?' e come rifattorizzare una query mostro.
-
Lezione 12
Funzioni di finestra: ROW_NUMBER, LAG, LEAD, SUM OVER
La feature SQL che trasforma self-join e sottoquery correlate in una sola riga. Ranking, totali progressivi, delta periodo su periodo, e la clausola OVER spiegata.
-
Lezione 13
UNION vs UNION ALL
Perché UNION ALL è più veloce e perché la gente continua a scrivere UNION per sbaglio. Più INTERSECT, EXCEPT, e come combinare i result set nel modo giusto.
-
Lezione 14
Funzioni stringa: STRING_AGG, STRING_SPLIT, TRIM
Gestione moderna delle stringhe in T-SQL. Concatenazione, split, pattern matching, trimming, più la morte delle funzioni CLR per il lavoro sulle stringhe.
-
Lezione 15
Date e orari: la palude dei timezone
DATETIMEOFFSET, AT TIME ZONE, le trappole di DATEDIFF, salvare UTC vs locale, e l'orrore EU-specifico dell'ora legale. Perché Runehold etichetta ogni timestamp.
-
Lezione 16
Common Table Expressions sul serio: le CTE ricorsive
Organigrammi, alberi di cartelle, distinte base e il generatore di dimensione date in una riga. Come ragionare sulle CTE ricorsive senza perdersi.
-
Lezione 17
INSERT, UPDATE, DELETE, e perché MERGE è pericoloso
I quattro verbi DML, i pattern UPSERT che funzionano davvero, la clausola OUTPUT, e la lunga lista di motivi per evitare MERGE.
-
Lezione 18
Transazioni e le proprietà ACID
Cosa vogliono dire davvero atomico, consistente, isolato e durevole. BEGIN TRAN, COMMIT, ROLLBACK, SAVEPOINT, e i pattern di gestione errori che tengono i dati onesti.
-
Lezione 19
Livelli di isolamento smitizzati
READ COMMITTED, SNAPSHOT, SERIALIZABLE, e le quattro anomalie che prevengono. Perché il default di SQL Server può morderti, e perché RCSI è l'impostazione che la maggior parte degli shop EU dovrebbe attivare.
-
Lezione 20
Lock, bloccaggio, deadlock: il triangolo quotidiano
Lock condivisi, esclusivi e di update. Trovare chi blocca chi con sp_who2 e le DMV. Leggere i deadlock graph. Il pattern di retry di cui ogni app di produzione ha bisogno.
-
Lezione 21
Indici clustered e non clustered, spiegati come avrei voluto me li spiegassero
Perché ogni tabella vuole un indice clustered, come scegliere la colonna, quanto costa davvero la frammentazione e l'amplificazione di scritture nascosta dietro le scelte sbagliate.
-
Lezione 22
Indici di copertura e colonne incluse
La tassa del key lookup, INCLUDE vs colonne chiave, quando rendere un indice di copertura, e come trovare indici candidati dalle DMV degli indici mancanti.
-
Lezione 23
Indici filtrati e columnstore: gli eroi di nicchia
Quando il rowstore non basta. Indici filtrati per soft-delete e dati sparsi. Columnstore per query di warehouse. Come scegliere e quando.
-
Lezione 24
Frammentazione, rebuild, reorg: il mito del 30%
Cosa ha detto davvero Paul Randal, perché il maintenance plan di default è sbagliato sugli SSD, e come costruire una strategia di manutenzione sensata nel 2026.
-
Lezione 25
Leggere un piano di esecuzione senza piangere
Come SQL Server decide di eseguire la tua query, come leggere il piano che ti mostra, e i tre operatori che spiegano il 90% delle query lente.
-
Lezione 26
Statistiche e stima della cardinalità
Come l'ottimizzatore tira a indovinare, quando sbaglia, il cardinality estimator legacy contro quello moderno, e le DMV che ti dicono la verità sulle tue stats.
-
Lezione 27
Parameter sniffing: il bug, la feature, il fix
Perché la query è veloce in SSMS e lenta nell'app. OPTIMIZE FOR, RECOMPILE, plan forcing in Query Store, e le feature recenti di SQL Server che rendono il problema meno doloroso.
-
Lezione 28
Plan cache e Query Store: la tua macchina del tempo
La differenza tra plan cache e Query Store. Come trovare la query che è regredita martedì scorso. Forzare i piani senza modifiche di codice.
-
Lezione 29
Come funziona davvero il partizionamento in SQL Server
Una guida pratica alle partition function, ai partition scheme, al pattern sliding window e alle insidie che nessuno ti racconta finché il job notturno non va a fuoco.
-
Lezione 30
Filegroups, file di dati, e cosa sta facendo davvero il log file
MDF, NDF, LDF, disastri di autogrowth, VLF, e perché il recovery model FULL senza backup del log è una bomba a orologeria. La struttura di storage che ogni DBA dovrebbe conoscere.
-
Lezione 31
Backup: FULL, DIFF, LOG, e l'esercitazione di restore
I tre tipi di backup, point-in-time recovery, come testare un backup che non hai mai testato, e la pianificazione che ogni sistema OLTP dovrebbe avere.
-
Lezione 32
SQL Agent jobs senza lacrime
Pianificazione, alert, email agli operatori, e il pattern del 'mio job fallisce in silenzio'. L'equivalente Azure SQL via Elastic Jobs. Costruire manutenzione che gira davvero.
-
Lezione 33
Sicurezza di base: login, utenti, ruoli
Principal, schemi, la trappola del ruolo public, principio del minimo privilegio. Più note specifiche GDPR per un'azienda dell'UE.
-
Lezione 34
tempdb: l'unica risorsa condivisa che ammazza tutto
Numero di file, autogrowth, TF 1118, metadati di tempdb memory-optimized. Perché tempdb è il vicino di tutti e come fare in modo che non litighino.
-
Lezione 35
Maintenance plan vs Ola Hallengren
Perché ogni azienda prima o poi butta via il Maintenance Plan grafico ed esegue gli script gratuiti di Ola. L'installazione esatta + la configurazione per uno schedule settimanale sensato.
-
Lezione 36
DMV che ogni DBA dovrebbe sapere a memoria
Le otto query che esegui su un server freddo. Wait stats, blocking, top CPU, top I/O, buffer pool, indici mancanti, indici inutilizzati, panoramica del sistema.
-
Lezione 37
Il First Responder Kit: il regalo di Brent Ozar all'umanità
Cos'è il kit, perché è MIT-licensed e gratuito per sempre, come installarlo su ogni SQL Server che possiedi e la forma degli strumenti al suo interno.
-
Lezione 38
sp_BlitzIndex e sp_BlitzCache: la scansione completa
Audit approfondito degli indici con sp_BlitzIndex. Revisione dei piani di query con sp_BlitzCache. Leggere l'output, fare triage delle 50 cose che trovano.
-
Lezione 39
sp_BlitzCache e sp_WhoIsActive: cosa sta succedendo PROPRIO ADESSO
sp_WhoIsActive di Adam Machanic è la procedura per la risposta in emergenza. Più sp_BlitzFirst per le wait stat puntuali.
-
Lezione 40
Health check di SQL Server in 30 minuti: lo script che esegui davvero
La checklist ordinata che eseguo su qualsiasi SQL Server che non ho mai visto prima. Stampabile, copiabile, e la lezione di chiusura del corso.