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.