Allt om joins

Förbättra frågeprestanda i PostgreSQL

Amy McCarty

Instructor

Kursöversikt

  • Frågestruktur, inklusive joins, underfrågor och temporära tabeller
  • Begränsa och aggregera data
  • Databaslagringsegenskaper och optimeringsverktyg
  • Frågeplanning och körning
Förbättra frågeprestanda i PostgreSQL

Frågeoptimerare

Fråga

  • SQL-instruktioner

En servitör på en restaurang

Frågeplan (körning)

  • De faktiska stegen

Flera kockar runt en stor gryta

Förbättra frågeprestanda i PostgreSQL

Frågeoptimerare

Servitör som serverar mat

Servitör som serverar drycker

Förbättra frågeprestanda i PostgreSQL

 

Vad är joins?

  • Kombinerar flera tabeller
Förbättra frågeprestanda i PostgreSQL

 

Vad är joins?

  • Kombinerar flera tabeller

Varför använda joins?

  • Uppslagstabeller
  • Kombinera data

Hur?

  • Inner och outer

 

Försäljnings-ID Order Dt Belopp Kund nr
01 2019-02-02 145.30 911

 

ID Namn Kund sedan
911 Jim Smith 2019-01-01

 

Försäljnings-ID Order Dt Belopp Namn
01 2019-02-02 145.30 Jim Smith
Förbättra frågeprestanda i PostgreSQL

Inner joins

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209

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

 

 

 

Atlet Land Land1 Namn Bef. (milj)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Förbättra frågeprestanda i PostgreSQL

Inner joins

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Den sista posten är fetstilad. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209. Den sista posten är fetstilad.

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

 

 

 

Atlet Land Land1 Namn Bef. (milj)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Förbättra frågeprestanda i PostgreSQL

USING inner joins

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Atlet Land Namn Bef. (milj)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
Förbättra frågeprestanda i PostgreSQL

USING inner joins

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Den sista posten är fetstilad. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209. Den sista posten är fetstilad.

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Atlet Land Namn Bef. (milj)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
Förbättra frågeprestanda i PostgreSQL

Left outer join

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209

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

 

 

Atlet Land Land1 Namn Bef. (milj)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
Förbättra frågeprestanda i PostgreSQL

Left outer join

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209. Den sista posten är fetstilad.

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

 

 

Atlet Land Land1 Namn Bef. (milj)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
Förbättra frågeprestanda i PostgreSQL

Right outer join

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209

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

 

 

Atlet Land Land1 Namn Bef. (milj)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
Förbättra frågeprestanda i PostgreSQL

Right outer join

En atletabell med fyra poster för atlet och land. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Den sista posten är fetstilad. En landtabell med fyra poster för land, namn och befolkning i miljoner. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209.

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

 

 

Atlet Land Land1 Namn Bef. (milj)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
Förbättra frågeprestanda i PostgreSQL

Full outer join

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Frågeplan (körning)

Flera kockar runt en stor gryta

  • Begränsar frågeoptimeraren
Atletnamn Land Land1 Namn Bef. (milj)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
BRA Brazil 209
Förbättra frågeprestanda i PostgreSQL

Nu kör vi en övning!

Förbättra frågeprestanda i PostgreSQL

Preparing Video For Download...