AccueilBlogTest SQL senior
Tests prêts à l'emploi

Test SQL senior : un cas de modélisation + optimisation à donner en entretien

Pour un profil senior, écrire une requête ne suffit pas : il faut savoir modéliser et optimiser. Ce cas en deux parties, à donner en entretien (30-40 min), révèle la capacité d'arbitrage d'un candidat expérimenté. Corrigé et grille inclus.

Data Builder·Juillet 2025·11 min de lecture·Test SQL · niveau senior · entretien

On n'attend pas une réponse unique mais un raisonnement : quels compromis, pourquoi, à quel coût. Un senior justifie ses choix ; un junior déguisé applique des recettes sans les relier au contexte.

1Le point de départ : une table dénormalisée

La consigne

Donnez cette table au candidat.

On part d'une seule grande table où tout est répété (le nom du client, son pays, le nom du produit reviennent à chaque ligne de commande). C'est le point de départ classique d'un cas de modélisation.

-- Table de depart (tout dans une seule table) ventes_brutes( commande_id, date_commande, statut, client_nom, client_pays, client_email, produit_nom, produit_categorie, produit_prix, quantite, montant )

    2Partie 1 — Modéliser proprement

    La consigne

    Proposez un schéma normalisé (ou en étoile) et justifiez vos choix.

    On demande au candidat de découper cette table en un modèle propre et d'expliquer les compromis. Un bon senior propose un schéma en étoile (une table de faits, des dimensions) et sait dire pourquoi.

    -- Corrige : schema en etoile (orientation analytique) dim_clients(id, nom, email, pays) dim_produits(id, nom, categorie, prix) fait_commandes( id, date_commande, statut, client_id -> dim_clients(id), produit_id -> dim_produits(id), quantite, montant ) -- La table de faits ne garde que des cles + mesures ; -- les libelles vivent dans les dimensions (une seule source de verite).
    • Attendu : séparer les dimensions (clients, produits) de la table de faits (commandes).
    • Attendu : justifier normalisation vs schéma en étoile selon l'usage (analytique).
    • Bon signe : le candidat parle de cohérence, de doublons évités et de performance de lecture.

    Signal d'alerte : ce qu'on évalue : pas le schéma « parfait », mais la capacité à arbitrer (normaliser pour la cohérence vs dénormaliser pour la vitesse de lecture) et à relier ce choix à l'usage réel.

    3Partie 2 — Optimiser une requête lente

    La consigne

    Cette requête d'agrégation est lente sur des millions de lignes. Comment l'améliorer ?

    On soumet une requête réaliste mais mal écrite. Un senior identifie les anti-patterns et propose des pistes concrètes (index, éviter les fonctions sur colonnes filtrées, pré-agrégation).

    -- Requete lente (anti-pattern) SELECT client_id, SUM(montant) FROM fait_commandes WHERE YEAR(date_commande) = 2024 -- fonction sur colonne = pas d'index GROUP BY client_id; -- Corrige : filtre par plage (l'index sur date_commande est utilisable) SELECT client_id, SUM(montant) FROM fait_commandes WHERE date_commande >= '2024-01-01' AND date_commande < '2025-01-01' GROUP BY client_id; -- + index sur (date_commande, client_id) ; envisager une table pre-agregee -- si cette requete tourne souvent.
    • Attendu : repérer le filtre par fonction sur la date qui empêche l'usage d'un index.
    • Attendu : proposer un filtre par plage de dates, un index adapté, voire une pré-agrégation.
    • Bon signe : le candidat veut d'abord lire le plan d'exécution avant d'optimiser à l'aveugle.

    Signal d'alerte : le vrai marqueur senior : commencer par « je regarde le plan d'exécution », pas appliquer des optimisations au hasard. La démarche compte autant que la solution.

    4Grille par niveau

    NiveauMaîtrise attendueSignal GONO-GO
    JuniorSait écrire des requêtesDécoupe la table en dimensions/faitsNe voit pas le problème de la table unique
    ConfirméModélise correctementJustifie normalisation vs étoileModélise sans expliquer les compromis
    SeniorOptimise avec méthodeLit le plan, repère les anti-patternsOptimise au hasard sans diagnostic
    LeadArbitre selon le contexteRelie chaque choix au coût et à l'usageApplique des recettes hors contexte

    Vous recrutez un profil data ?

    Data Builder mène l'entretien technique et vous livre un rapport clair et détaillé sous 24h. Premier entretien offert.

    Tester gratuitementRéserver un appel