Quels sont les avantages et les inconvénients d'une jointure ou d'une sous-requête ?

...

Les requêtes de base de données récupèrent des informations spécifiques de la base de données.

Une sous-requête est une requête dans une autre requête. Une sous-requête peut également contenir une autre sous-requête. Ce sont des sous-requêtes « imbriquées ». Une jointure se produit 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 donne 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". Il est toujours mis entre parenthèses.

Vidéo du jour

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, effectuer la même opération qui nécessiterait normalement des jointures et des unions complexes et est plus facile à 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 dans 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 adhésion

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 des clés primaires et étrangères. Par exemple, une table d'employés peut avoir une clé primaire d'une colonne d'identifiant d'employé, tandis qu'une table de feuille de temps a également une colonne d'identifiant d'employé qui est une clé étrangère pour la table d'employés. La jointure SQL peut être écrite sous la forme « 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, étant donné que 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, 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 le jeu de résultats souhaité correct.