Optimisation des requêtes

Introduction à la modélisation des données dans Snowflake

Nuno Rocha

Director of Engineering

Ordre d'exécution d'une requête

Ordre d'exécution d'une requête, requête complète

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (1)

Ordre d'exécution d'une requête ; FROM

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (2)

Ordre d'exécution d'une requête ; JOIN

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (3)

Ordre d'exécution d'une requête ; WHERE

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (4)

Ordre d'exécution d'une requête ; AGGREGATIONS

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (5)

Ordre d'exécution d'une requête ; HAVING

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (6)

Ordre d'exécution d'une requête ; TRI

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (7)

Ordre d'exécution d'une requête ; LIMIT

Introduction à la modélisation des données dans Snowflake

Ordre d'exécution d'une requête (8)

Ordre final d'exécution d'une requête

  • BONNES PRATIQUES :
    • Évitez SELECT * ; indiquez seulement les colonnes nécessaires
    • Appliquez LIMIT pour réduire le volume de données
    • Utilisez WHERE tôt pour filtrer les lignes et économiser la mémoire
    • Utilisez GROUP BY avec agrégations sur des ensembles restreints pour optimiser le traitement
Introduction à la modélisation des données dans Snowflake

Sous-requêtes

Représentation d'une sous-requête

Introduction à la modélisation des données dans Snowflake

Sous-requêtes

Modèle de données du programme de fidélité d'une chaîne hôtelière

Introduction à la modélisation des données dans Snowflake

Sous-requêtes

  • Rechercher tous les clients ayant plus de 1 000 points de fidélité
SELECT *
FROM guests
WHERE id IN (SELECT guest_id 
                  FROM loyalty_program 
                  WHERE loyalty_points > 1000);
Introduction à la modélisation des données dans Snowflake

Expressions de table communes

CTE

Introduction à la modélisation des données dans Snowflake

Expressions de table communes

  • Extraire les détails de la dernière réservation
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;
Introduction à la modélisation des données dans Snowflake

CTE et sous-requêtes

CTE

  • Avantages

    • Améliore la lisibilité des requêtes complexes
    • Permet la réutilisation dans la même requête
    • Mieux organiser les requêtes SQL
  • Inconvénients

    • Peut ajouter une surcharge de performance
    • Limité à la portée d'une seule requête

Sous-requêtes

  • Avantages

    • Simples et directes pour un usage unique
    • Flexibles dans diverses parties d'une instruction SQL
  • Inconvénients

    • Lisibilité réduite avec la complexité
    • Risques de performance avec des imbrications
Introduction à la modélisation des données dans Snowflake

Visualiser les temps d'exécution des requêtes

Page de profil de requête

Introduction à la modélisation des données dans Snowflake

Aperçu : terminologie et fonctions

  • Optimisation des requêtes : affiner les requêtes pour maximiser l'efficacité et les performances
  • Sous-requête : petite requête imbriquée aidant à cibler des données spécifiques
  • Expressions de table communes (CTE) : table virtuelle temporaire pendant une requête
  • WITH .. AS : commande SQL définissant une CTE
  • LIMIT : clause SQL limitant le nombre de lignes du résultat
  • HAVING : clause SQL pour filtrer des données agrégées avec des fonctions comme SUM, MAX, etc.
  • WHERE : clause SQL pour filtrer les lignes avant l'agrégation, améliorant l'efficacité
Introduction à la modélisation des données dans Snowflake

Modèles : CTE et sous-requête

  • Sous-requête
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;
Introduction à la modélisation des données dans Snowflake

Passons à la pratique !

Introduction à la modélisation des données dans Snowflake

Preparing Video For Download...