Analisi SQL

CTE o sottoquery: come scegliere?

Entrambi strutturano una query; la forma migliore è quella che rende verificabili i passaggi aziendali.

Team SQL.tn9min
Una trasformazione SQL confronta i passaggi successivi con una struttura nidificata

Hai bisogno di nominare un passaggio?

Una sottoquery breve è adatta per un valore di confronto o un risultato utilizzato una sola volta. Uno CTE rende visibile un passo aziendale e facilita il concatenamento di diverse trasformazioni.

Nessuno dei due da solo garantisce prestazioni migliori. Il motore può ottimizzarli diversamente; resta necessaria la misurazione su dati reali.

I nomi, gli importi e i dati utilizzati in questo articolo sono fittizi e creati a scopo didattico.

La domanda è stata spiegata

Inizia definendo cosa dovrebbe rappresentare una riga del risultato. Questa decisione determina le colonne, i raggruppamenti e i controlli necessari.

L'esempio seguente isola il meccanismo principale. Eseguilo, osserva il risultato, quindi modifica una clausola alla volta per comprenderne l'effetto.

Totali e margine separati
WITH totaux AS (
  SELECT SUM(chiffre_affaires) AS ca, SUM(couts) AS couts
  FROM ventes_mensuelles
)
SELECT ca, couts, ca - couts AS marge
FROM totaux;

Leggi il risultato come un analista

I totali CTE corrispondono ad un passo nominabile. La query finale rimane focalizzata sull'indicatore consegnato.

Durante la costruzione, eseguire separatamente il contenuto di ciascun CTE per verificarne il livello di dettaglio e i totali.

  • Nomina la responsabilità del passaggio.
  • Controllare il livello di dettaglio intermedio.
  • Evitare CTE decorativi.
  • Rispettare il piano sulle query costose.

Errori che distorcono l'analisi

Una query può essere valida senza rispondere correttamente alla domanda. Gli errori più costosi spesso sono silenziosi: perimetro sbagliato, linea moltiplicata o valore mancante interpretato come zero.

Prima di condividere il risultato, confrontalo con un piccolo campione calcolato manualmente e mantieni la definizione dell'ambito con la query.

  • Taglia ogni linea in uno CTE.
  • Supponiamo che uno CTE acceleri sempre.
  • Riutilizzare un alias al livello sbagliato.
  • Nascondi un join complesso senza controllarne il risultato.

Mettiti in pratica

Costruisci l'esercizio sul margine globale con CTE, quindi scrivi una versione della sottoquery e confronta la leggibilità.

Il simulatore SQL di SQL.tn esegue solo query di lettura su dati fittizi nel tuo browser. Puoi provare più scritture e confrontare i risultati senza installare alcun software.

Metti in pratica questa guida.

Apri l’esercizio collegato, esegui la query e confronta il risultato atteso.

Inizia l’esercizio