>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

Avantages et inconvénients des jointures et sous-requêtes SQL

Une sous-requête est une requête au sein d'une autre requête. Une sous-requête peut également en contenir une autre. On dit alors qu'elles sont des sous-requêtes « imbriquées ». Une jointure est lorsque 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 jointure si certains critères sont remplis. Dans certains cas, une jointure offre de meilleures performances qu'une sous-requête.

Qu'est-ce 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 également appelée « requête interne » ou « sélection interne ». 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 ». Elle est toujours entourée de parenthèses.

Avantages et inconvénients des sous-requêtes

Les sous-requêtes sont avantageuses car 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 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 depuis la même table dans une sous-requête dans la même instruction SQL. Les sous-requêtes peuvent également prendre plus de temps à s'exécuter qu'une jointure en raison de la façon dont l'optimiseur de base de données les traite.

Qu'est-ce qu'une jointure ?

La plupart des sous-requêtes peuvent être réécrites en jointures, et la plupart des jointures peuvent être réécrites en sous-requêtes. Une jointure définit deux ou plusieurs tables par une colonne liée. Les tables sont généralement jointes sur des clés primaires et étrangères. Par exemple, une table d'employés pourrait avoir une clé primaire sur une colonne d'identifiant d'employé, tandis qu'une table de feuilles de temps a également une colonne d'identifiant d'employé qui est une clé étrangère vers 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

L'avantage principal d'une jointure est qu'elle s'exécute plus rapidement. L'augmentation de performance 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 existe également des jointures internes et externes, gauche et droite, des jointures complètes et des jointures croisées. Un 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 quel type de jointure est approprié pour obtenir le jeu de résultats souhaité.

Vie connectée