Transact-SQL (T-SQL): Fondamenti e Approfondimenti

[Lezione 6] - Ottimizzazione delle Query

24/01/2024


In questa lezione affronteremo i seguenti argomenti:

• Analisi ed esecuzione di piani di esecuzione delle query
• Indici e la loro importanza
• Utilizzo di indici per migliorare le prestazioni
• Ottimizzazione delle query con JOIN



Analisi ed esecuzione di piani di esecuzione delle query:
Il piano di esecuzione di una query rappresenta il percorso che il motore del database seguirà per ottenere i risultati.
L'analisi del piano di esecuzione aiuta a identificare aree di ottimizzazione.
Esempio:

    -- Abilita la visualizzazione del piano di esecuzione 
    SET SHOWPLAN_TEXT ON; 
    -- Query da analizzare 
    SELECT Nome, Cognome FROM Utente WHERE Eta > 25; 
    -- Disabilita la visualizzazione del piano di esecuzione 
    SET SHOWPLAN_TEXT OFF; 

L'analisi del piano di esecuzione mostra come SQL Server esegue la query, aiutando a ottimizzare le prestazioni.

Indici e la loro importanza:
Gli indici sono strumenti chiave per ottimizzare le query.
Esempio:

    -- Creazione di un indice sulla colonna Età 
    CREATE INDEX IDX_Eta ON Utente(Eta); 
    -- Query che beneficia dall'indice 
    SELECT Nome, Cognome FROM Utente WHERE Eta > 25;

Gli indici accelerano la ricerca dei dati, migliorando le prestazioni delle query.

Utilizzo di indici per migliorare le prestazioni:
La progettazione corretta degli indici è cruciale per ottenere le massime prestazioni.
Esempio:

    -- Creazione di un indice composto 
    CREATE INDEX IDX_NomeCognome ON Utente(Nome, Cognome); 
    -- Query che sfrutta l'indice composto 
    SELECT Nome, Cognome FROM Utente WHERE Nome = 'Mario' AND Cognome = 'Rossi'; 

Gli indici composti coprono più colonne e possono migliorare le prestazioni nelle query filtrate su più criteri.

Ottimizzazione delle query con JOIN:
L'utilizzo corretto degli operatori JOIN è essenziale per ottenere prestazioni ottimali nelle query che coinvolgono più tabelle.
Esempio:

    -- Query con INNER JOIN 
    SELECT Utente.Nome, Ordine.NumeroOrdine 
      FROM Utente INNER JOIN Ordine ON Utente.UserID = Ordine.UserID; 

Gli operatori JOIN collegano le tabelle in base alle relazioni specificate, migliorando l'efficienza delle query complesse.

In questa lezione, abbiamo esplorato strumenti e tecniche per ottimizzare le query in Transact-SQL, inclusa l'analisi del piano di esecuzione, la progettazione degli indici e l'uso efficiente degli operatori JOIN.
Nelle prossime lezioni, approfondiremo la creazione di viste e trigger per ulteriori miglioramenti delle prestazioni.


< lezione precedente      lezione successiva >