Une sous-requête est une requête dans une autre requête. Une sous-requête peut aussi contenir une autre sous-requête. On dit qu’il s’agit de sous-requêtes « imbriquées ». Une jointure est quand deux ou plusieurs tables sont référencées dans la clause « From » de la requête. Différents moteurs de base de données peuvent optimiser les sous-requêtes et les jointures différemment. Par exemple, l’optimiseur de DB2 transformera une sous-requête en une jointure si certains critères sont remplis. Dans certains cas, une jointure donne de meilleures performances qu’une sous-requête.
Sommaire de cette fiche pratique
Ce qui fait qu’une sous-requête
Une sous-requête est une instruction « SELECT » dans la clause « WHERE » ou « HAVING » d’une instruction externe « INSERT », « UPDATE », « MERGE » ou « DELETE ». La sous-requête est aussi appelée « requête intérieure » ou « sélection intérieure ». La sous-requête peut avoir une clause « FROM » avec une ou plusieurs tables et peut éventuellement avoir une clause « WHERE », « GROUP BY » ou « HAVING ». Il est toujours entre parenthèses.
Avantages et inconvénients des sous-requêtes
Les sous-requêtes sont avantageuses parce qu’elles structurent la requête pour isoler chaque partie de l’instruction, effectuent la même opération qui nécessiterait normalement des jointures et des unions complexes et sont plus faciles à lire. Les sous-requêtes ont même été à la base du nom « Structured Query Language » (SQL) en raison de leur structure facilement lisible. Un inconvénient est que vous ne pouvez pas modifier une table et sélectionner à partir de la même table à l’intérieur d’une sous-requête dans la même instruction SQL. Les sous-requêtes peuvent également prendre plus de temps à exécuter qu’une jointure en raison de la façon dont l’optimiseur de base de données les traite.
Ce qui fait qu’un membre s’inscrit
La plupart des sous-requêtes peuvent être réécrites en tant que jointures, et la plupart des jointures peuvent être réécrites en tant que sous-requêtes. Une jointure définit deux ou plusieurs tables par une colonne liée. Les tables sont généralement jointes sur les clés primaires et les clés étrangères. Par exemple, une table des employés peut avoir une clé primaire d’une colonne d’identification des employés, tandis qu’une table de feuilles de temps a également une colonne d’identification des employés qui est une clé étrangère à la table des employés. La jointure SQL peut être écrite comme « WHERE employee.empid = timesheet.empid » ou « FROM employee JOIN timesheet ON (employee.empid = timesheet.empid) ».
Avantages et inconvénients des jointures
Le principal avantage d’une jointure est qu’elle s’exécute plus rapidement. L’augmentation des performances peut ne pas être perceptible par l’utilisateur final. Cependant, comme les colonnes sont spécifiquement nommées, indexées et optimisées par le moteur de base de données, le temps de récupération sera presque toujours plus rapide que celui d’une sous-requête. Il y a aussi des jointures intérieures et extérieures, des jointures gauche et droite, des jointures complètes et des jointures croisées. L’inconvénient de l’utilisation des jointures est qu’elles ne sont pas aussi faciles à lire que les sous-requêtes. Un autre inconvénient est qu’il peut être déroutant de savoir quelle jointure est le type de jointure approprié à utiliser pour obtenir l’ensemble de résultats souhaités.
Laisser un commentaire