Query-optimalisatie

Introductie tot datamodellering in Snowflake

Nuno Rocha

Director of Engineering

Volgorde query-uitvoering

Volgorde query-uitvoering, volledige query

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (1)

Volgorde query-uitvoering; FROM

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (2)

Volgorde query-uitvoering; JOIN

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (3)

Volgorde query-uitvoering; WHERE

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (4)

Volgorde query-uitvoering; AGGREGATIES

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (5)

Volgorde query-uitvoering; HAVING

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (6)

Volgorde query-uitvoering; SORTEREN

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (7)

Volgorde query-uitvoering; LIMIT

Introductie tot datamodellering in Snowflake

Volgorde query-uitvoering (8)

Definitieve volgorde query-uitvoering

  • BEST PRACTICES:
    • Vermijd SELECT *; specificeer alleen benodigde kolommen
    • Pas LIMIT toe om datavolume te verkleinen
    • Gebruik WHERE vroeg voor rijenfiltering en geheugenbesparing
    • Gebruik GROUP BY met aggregaties op verkleinde datasets voor snellere verwerking
Introductie tot datamodellering in Snowflake

Subquery’s

Weergave subquery

Introductie tot datamodellering in Snowflake

Subquery’s

Gegevensmodel loyaliteitsprogramma hotelketen

Introductie tot datamodellering in Snowflake

Subquery’s

  • Selecteer alle gasten met meer dan 1000 loyaliteitspunten
SELECT *
FROM guests
WHERE id IN (SELECT guest_id 
                  FROM loyalty_program 
                  WHERE loyalty_points > 1000);
Introductie tot datamodellering in Snowflake

Common table expressions

CTE

Introductie tot datamodellering in Snowflake

Common table expressions

  • Haal de laatste boekingsgegevens op
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;
Introductie tot datamodellering in Snowflake

CTE’s en subquery’s

CTE’s

  • Voordelen

    • Verbetert leesbaarheid bij complexe queries
    • Herbruikbaar binnen dezelfde query
    • Beter overzicht van SQL-queries
  • Nadelen

    • Kan prestatie-overhead geven
    • Beperkt tot de scope van één query

Subquery’s

  • Voordelen

    • Eenvoudig en direct voor eenmalig gebruik
    • Flexibel inzetbaar in diverse delen van een SQL-statement
  • Nadelen

    • Minder leesbaar bij complexiteit
    • Mogelijke prestatieproblemen bij geneste varianten
Introductie tot datamodellering in Snowflake

Uitvoeringstijden visualiseren

Pagina queryprofiel

Introductie tot datamodellering in Snowflake

Overzicht terminologie en functies

  • Query-optimalisatie: Queries fijnslijpen voor maximale efficiëntie en performance
  • Subquery: Kleinere query binnen een hoofdquery om te focussen op specifieke data
  • Common Table Expressions (CTE’s): Tijdelijke virtuele tabel tijdens een query
  • WITH .. AS: SQL-commando om een CTE te definiëren
  • LIMIT: SQL-clausule die het aantal rijen in het resultaat beperkt
  • HAVING: SQL-clausule om geaggregeerde data te filteren (zoals SUM, MAX)
  • WHERE: SQL-clausule die rijen filtert vóór groeperen, voor efficiëntere queries
Introductie tot datamodellering in Snowflake

Voorbeeldsjabloon CTE en subquery

  • Subquery
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;
Introductie tot datamodellering in Snowflake

Laten we oefenen!

Introductie tot datamodellering in Snowflake

Preparing Video For Download...