Ottimizzazione delle query

Introduzione al Data Modeling in Snowflake

Nuno Rocha

Director of Engineering

Ordine di esecuzione della query

Ordine di esecuzione della query, query completa

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (1)

Ordine di esecuzione della query; FROM

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (2)

Ordine di esecuzione della query; JOIN

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (3)

Ordine di esecuzione della query; WHERE

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (4)

Ordine di esecuzione della query; AGGREGATIONS

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (5)

Ordine di esecuzione della query; HAVING

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (6)

Ordine di esecuzione della query; SORT

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (7)

Ordine di esecuzione della query; LIMIT

Introduzione al Data Modeling in Snowflake

Ordine di esecuzione della query (8)

Ordine finale di esecuzione della query

  • BEST PRACTICES:
    • Evita SELECT *; indica solo le colonne necessarie
    • Usa LIMIT per ridurre il volume di dati
    • Applica WHERE presto per filtrare righe e risparmiare memoria
    • Usa GROUP BY con aggregazioni su dataset ristretti per ottimizzare
Introduzione al Data Modeling in Snowflake

Sottoquery

Rappresentazione di sottoquery

Introduzione al Data Modeling in Snowflake

Sottoquery

Modello dati fedeltà catena di hotel

Introduzione al Data Modeling in Snowflake

Sottoquery

  • Interroga tutti gli ospiti con più di 1000 punti fedeltà
SELECT *
FROM guests
WHERE id IN (SELECT guest_id 
                  FROM loyalty_program 
                  WHERE loyalty_points > 1000);
Introduzione al Data Modeling in Snowflake

Common Table Expressions

CTE

Introduzione al Data Modeling in Snowflake

Common Table Expressions

  • Recupera i dettagli dell’ultima prenotazione
WITH latest_booking AS (
    SELECT guest_id, 
           MAX(checkout_date) AS latest_checkout
    FROM booking_details
    GROUP BY guest_id
)
SELECT bd.*, 
       bd.checkout_date AS latest_booking_date
FROM booking_details bd
    JOIN latest_booking lb 
        ON bd.guest_id = lb.guest_id 
        AND bd.checkout_date = lb.latest_checkout;
Introduzione al Data Modeling in Snowflake

CTE e sottoquery

CTE

  • Pro

    • Migliora la leggibilità nelle query complesse
    • Consente riuso nella stessa query
    • Migliora l’organizzazione dell’SQL
  • Contro

    • Può introdurre overhead prestazionale
    • Limitate all’ambito di una singola query

Sottoquery

  • Pro

    • Semplici e dirette per usi singoli
    • Flessibili in varie parti di un’istruzione SQL
  • Contro

    • Con la complessità riducono la leggibilità
    • Possibili problemi di performance con nidificazioni
Introduzione al Data Modeling in Snowflake

Visualizzare i tempi di esecuzione delle query

Pagina profilo query

Introduzione al Data Modeling in Snowflake

Panoramica di termini e funzioni

  • Ottimizzazione delle query: affinare le query per massimizzare efficienza e performance
  • Sottoquery: query più piccola dentro la query principale per focalizzare i dati
  • Common Table Expressions (CTE): tabella virtuale temporanea durante una query
  • WITH .. AS: comando SQL per definire una CTE
  • LIMIT: clausola SQL che limita il numero di righe nel risultato
  • HAVING: clausola SQL per filtrare dati aggregati con funzioni come SUM, MAX, ecc.
  • WHERE: clausola SQL per filtrare righe prima del grouping, migliorando l’efficienza
Introduzione al Data Modeling in Snowflake

Template di CTE e sottoquery

  • Sottoquery
SELECT *
FROM table_name
WHERE column_name IN (SELECT column_name 
                  FROM table_name
                  WHERE column_name condition value);
  • CTE
WITH latest_booking_dates AS (
    SELECT column_name
    FROM table_name)
SELECT *
FROM table_name a
    JOIN other_table_name b 
    ON a.key_column = b.key_column;
Introduzione al Data Modeling in Snowflake

Ayo berlatih!

Introduzione al Data Modeling in Snowflake

Preparing Video For Download...