Tout sur les jointures

Améliorer la performance des requêtes dans PostgreSQL

Amy McCarty

Instructor

Aperçu du cours

  • Structure des requêtes : jointures, sous-requêtes, tables temporaires
  • Limiter et agréger les données
  • Propriétés de stockage et outils d'optimisation
  • Planification et exécution des requêtes
Améliorer la performance des requêtes dans PostgreSQL

Planificateur de requêtes

Requête

  • Instructions SQL

Un serveur au restaurant

Plan d'exécution de requête

  • Étapes réelles

Plusieurs chefs autour d'un grand chaudron

Améliorer la performance des requêtes dans PostgreSQL

Planificateur de requêtes

Serveur apportant des plats

Serveur apportant des boissons

Améliorer la performance des requêtes dans PostgreSQL

 

Qu'est-ce qu'une jointure ?

  • Combiner plusieurs tables
Améliorer la performance des requêtes dans PostgreSQL

 

Qu'est-ce qu'une jointure ?

  • Combiner plusieurs tables

Pourquoi utiliser des jointures ?

  • Rechercher dans des tables de référence
  • Assembler des données

Comment ?

  • Interne et externe

 

ID vente Date comm. Montant No client
01 2019-02-02 145.30 911

 

ID Nom Client depuis
911 Jim Smith 2019-01-01

 

ID vente Date comm. Montant Nom
01 2019-02-02 145.30 Jim Smith
Améliorer la performance des requêtes dans PostgreSQL

Jointures internes

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209

SELECT *
FROM athletes a
INNER JOIN countries c
ON a.country = c.country

 

 

 

Athlète Pays Pays1 Nom Pop (M)
Jack AUT AUT Autriche 9
Aditya IND IND Inde 1 339
Mikhail RUS RUS Russie 145
Améliorer la performance des requêtes dans PostgreSQL

Jointures internes

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Le dernier est en gras. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209. Le dernier est en gras.

SELECT *
FROM athletes a
INNER JOIN countries c
ON a.country = c.country

 

 

 

Athlète Pays Pays1 Nom Pop (M)
Jack AUT AUT Autriche 9
Aditya IND IND Inde 1 339
Mikhail RUS RUS Russie 145
Améliorer la performance des requêtes dans PostgreSQL

Jointures internes avec USING

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Athlète Pays Nom Pop (M)
Jack AUT Autriche 9
Aditya IND Inde 1 339
Mikhail RUS Russie 145
Améliorer la performance des requêtes dans PostgreSQL

Jointures internes avec USING

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Le dernier est en gras. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209. Le dernier est en gras.

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Athlète Pays Nom Pop (M)
Jack AUT Autriche 9
Aditya IND Inde 1 339
Mikhail RUS Russie 145
Améliorer la performance des requêtes dans PostgreSQL

Jointure externe gauche

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209

SELECT *
FROM athletes a
LEFT JOIN countries c
ON a.country = c.country

 

 

Athlète Pays Pays1 Nom Pop (M)
Jack AUT AUT Autriche 9
Aditya IND IND Inde 1 339
Mikhail RUS RUS Russie 145
Javier MEX
Améliorer la performance des requêtes dans PostgreSQL

Jointure externe gauche

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209. Le dernier est en gras.

SELECT *
FROM athletes a
LEFT JOIN countries c
ON a.country = c.country

 

 

Athlète Pays Pays1 Nom Pop (M)
Jack AUT AUT Autriche 9
Aditya IND IND Inde 1 339
Mikhail RUS RUS Russie 145
Javier MEX
Améliorer la performance des requêtes dans PostgreSQL

Jointure externe droite

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209

SELECT *
FROM athletes a
RIGHT JOIN countries c
ON a.country = c.country

 

 

Athlète Pays Pays1 Nom Pop (M)
Jack AUT AUT Autriche 9
Aditya IND IND Inde 1 339
Mikhail RUS RUS Russie 145
BRA Brésil 209
Améliorer la performance des requêtes dans PostgreSQL

Jointure externe droite

Une table d'athlètes avec quatre enregistrements pour athlète et pays. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Le dernier est en gras. Une table des pays avec quatre enregistrements pour code pays, nom, population en millions. AUT - Autriche - 9. IND - Inde - 1 339. RUS - Russie - 145. BRA - Brésil - 209.

SELECT *
FROM athletes a
RIGHT JOIN countries c
ON a.country = c.country

 

 

Athlète Pays Pays1 Nom Pop (M)
Jack AUT AUT Autriche 9
Aditya IND IND Inde 1 339
Mikhail RUS RUS Russie 145
BRA Brésil 209
Améliorer la performance des requêtes dans PostgreSQL

Jointure externe complète

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Plan d'exécution de requête

Plusieurs chefs autour d'un grand chaudron

  • Contraint le planificateur de requêtes
Nom athlète Pays Pays1 Nom Pop (M)
Jack AUT AUT Autriche 9
Aditya IND IND Inde 1 339
Mikhail RUS RUS Russie 145
Javier MEX
BRA Brésil 209
Améliorer la performance des requêtes dans PostgreSQL

Passons à la pratique !

Améliorer la performance des requêtes dans PostgreSQL

Preparing Video For Download...