Aller au contenu principal

Afficher l'instruction SQL

La fonctionnalité Afficher l'instruction SQL vous permet de voir le code SQL généré par votre modèle de données dans le Concepteur de modèles de données. Ce code affiche tous les champs, tables et jointures sélectionnés, et peut vous aider à comprendre ou à résoudre des problèmes concernant la façon dont le modèle récupère les données.

important

Vous devez avoir au moins une colonne dans la Table des champs pour que l'instruction SQL soit générée.

Voir l'instruction SQL

  1. Dans le Concepteur de modèles de données, cliquez sur Instruction SQL dans la barre d'outils.
  2. Examinez le code SQL généré pour votre modèle de données. Utilisez-le pour comprendre les jointures de tables, les champs sélectionnés et la logique de filtrage.
  3. (Optionnel) Copiez l'instruction SQL si vous devez l'exécuter ou la modifier dans un outil de base de données.
  4. Cliquez sur Ok une fois terminé.

Comportement important de la clause WHERE

Lorsque vous ouvrez l'instruction SQL, vous pouvez constater qu'elle se termine par :

WHERE 1 = 2

Ce filtre de remplacement est inséré intentionnellement pour empêcher l'instruction SQL de s'exécuter non filtrée par défaut. L'exécution du SQL généré sans filtres adéquats peut avoir un impact sévère sur votre système source.

Le SQL généré inclut toutes les jointures de tables, même si certaines nécessitent des filtres normalement fournis par l'interface utilisateur (par exemple, une Page de sélection ou un Filtre générique). Sans ces filtres, une requête peut générer d'énormes ensembles de données et potentiellement surcharger le serveur de base de données.

Exemple de risque potentiel

Considérez une table de faits contenant 100 000 lignes de factures jointes à une table de taux de change comportant 15 000 lignes (taux pour chaque jour sur 5 ans) :

  • La jointure est basée sur la devise, mais pas sur la date.
  • Le filtre de date est intentionnellement laissé à l'utilisateur pour sélection lors de l'exécution du rapport.
  • S'il est exécuté sans filtre de date, la requête multiplie toutes les lignes :
    5 ans × 365 jours × 100 000 factures = 182 500 000 lignes
  • Si la table de faits a 5 millions de factures, le nombre de résultats devient significativement plus élevé.

En ajoutant WHERE 1 = 2, aucun enregistrement n'est retourné jusqu'à ce que vous le remplaciez par un filtre sûr. Assurez-vous toujours qu'une condition appropriée est ajoutée avant l'exécution.

Limiter les comptes de records

Pour contrôler la taille de la sortie lors des tests, vous pouvez utiliser le mot-clé TOP dans l'instruction SELECT.

SELECT TOP 1000 ...