>> Électroniques Technologie >  >> Maison intelligente >> Vie intelligente

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

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. On dit que 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 différemment les sous-requêtes et les jointures. 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 qui fait 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 entre 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 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 effectuer une sélection dans la même table au sein d'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 qui fait une jointure

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 associé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'ID d'employé, tandis qu'une table de feuille de temps a également une colonne d'ID d'employé qui est une clé étrangère de 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 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 produire le jeu de résultats souhaité correct.


Vie intelligente