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

May 25

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


Une sous - requête est une requête dans une autre requête. Une sous - requête peut également contenir un autre sous - requête. Ceux - ci sont censés être sous - requêtes «imbriqués». Une jointure est lorsque deux ou plusieurs tables sont référencées dans la clause "From" de la requête. Les moteurs de bases de données différentes peuvent optimiser les sous - requêtes et jointures différemment. Par exemple, l'optimiseur de DB2 va transformer une sous - requête en jointure si certains critères sont respectés. Dans certains cas, une jointure des rendements de meilleures performances qu'un sous - requête.

Ce qui fait une sous-requête

Une sous-requête est une instruction "SELECT" dans le "WHERE" ou "AYANT" clause d'un "INSERT," extérieur "UPDATE", "Fusionner" ou "DELETE" déclaration. La sous-requête est aussi appelée la "requête interne" ou "sélectionnez intérieure." La sous-requête peut avoir une clause "FROM" avec une ou plusieurs tables et peut éventuellement avoir un "WHERE" GROUP BY "ou" "clause" HAVING. Il est toujours enfermé entre parenthèses.

Avantages et inconvénients de Subqueries

Subqueries sont avantageux car ils structurent la requête pour isoler chaque partie de la déclaration, effectuer la même opération qui requièrent habituellement des jointures complexes et les syndicats et sont plus faciles à lire. Subqueries ont même été la base pour le nom de "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électionnez dans la même table dans une sous-requête dans la même instruction SQL. Subqueries peuvent également prendre plus de temps à exécuter que une jointure en raison de la façon dont l'optimiseur de base de données les traite.

Ce qui fait une inscription

La plupart des sous-requêtes peuvent être réécrites en tant que jointures, et la plupart des jointures peuvent être réécrites comme des sous-requêtes. Une jointure définit deux ou plusieurs tables par une colonne correspondante. Les tables sont généralement jointes sur les clés primaires et étrangères. Par exemple, une table d'employés pourrait avoir une clé primaire d'une colonne d'identification de l'employé, alors qu'une table de feuille de temps a également une colonne id de l'employé qui est une clé étrangère à la table des employés. Le SQL jointure peut être écrite comme "WHERE employee.empid = timesheet.empid" ou "FROM employee JOIN timesheet ON (employee.empid = timesheet.empid)."

Avantages et inconvénients de jointures

Le principal avantage d'une jointure est qu'il exécute plus rapidement. L'augmentation de la performance peut ne pas être visible par l'utilisateur final. Cependant, parce que les colonnes sont spécifiquement nommés et indexés et optimisés par le moteur de base de données, le temps de récupération presque toujours sera plus rapide que celle d'un sous-requête. Il y a aussi des jointures internes et externes, à gauche et à droite rejoint, plein rejoint et jointures croisées. Un inconvénient de l'utilisation des jointures est qu'ils ne sont pas aussi faciles à lire que les sous-requêtes. Un autre inconvénient est que cela peut être source de confusion pour ce qui est rejoindre le type approprié de se joindre à utiliser pour obtenir le bon jeu de résultat souhaité.