Tutto sulle join

Migliorare le prestazioni delle query in PostgreSQL

Amy McCarty

Instructor

Panoramica del corso

  • Struttura delle query: join, subquery e tabelle temporanee
  • Limitare e aggregare i dati
  • Proprietà di storage e strumenti di ottimizzazione
  • Pianificazione ed esecuzione delle query
Migliorare le prestazioni delle query in PostgreSQL

Query planner

Query

  • Istruzioni SQL

Un cameriere al ristorante

Piano di esecuzione della query

  • Passi effettivi

Più chef attorno a una grande pentola

Migliorare le prestazioni delle query in PostgreSQL

Query planner

Cameriere che porta il cibo

Cameriere che porta da bere

Migliorare le prestazioni delle query in PostgreSQL

 

Cosa sono le join?

  • Combinano più tabelle
Migliorare le prestazioni delle query in PostgreSQL

 

Cosa sono le join?

  • Combinano più tabelle

Perché usarle?

  • Fare lookup su tabelle
  • Unire dati

Come?

  • Inner e outer

 

Sales ID Order Dt Amt Cust No
01 2019-02-02 145.30 911

 

ID Name Customer Since
911 Jim Smith 2019-01-01

 

Sales ID Order Dt Amt Name
01 2019-02-02 145.30 Jim Smith
Migliorare le prestazioni delle query in PostgreSQL

Inner join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Una tabella countries con quattro record per country, name, population in millions. 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

 

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Migliorare le prestazioni delle query in PostgreSQL

Inner join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. L’ultimo record è in grassetto. Una tabella countries con quattro record per country, name, population in millions. AUT - Austria - 9. IND - India - 1.339. RUS - Russia - 145. BRA - Brazil - 209. L’ultimo record è in grassetto.

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

 

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Migliorare le prestazioni delle query in PostgreSQL

USING con inner join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Una tabella countries con quattro record per country, name, population in millions. AUT - Austria - 9. IND - India - 1.339. RUS - Russia - 145. BRA - Brazil - 209

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Athlete Country Name Pop (mil)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
Migliorare le prestazioni delle query in PostgreSQL

USING con inner join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. L’ultimo record è in grassetto. Una tabella countries con quattro record per country, name, population in millions. AUT - Austria - 9. IND - India - 1.339. RUS - Russia - 145. BRA - Brazil - 209. L’ultimo record è in grassetto.

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Athlete Country Name Pop (mil)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
Migliorare le prestazioni delle query in PostgreSQL

Left outer join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Una tabella countries con quattro record per country, name, population in millions. 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

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
Migliorare le prestazioni delle query in PostgreSQL

Left outer join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX.  Una tabella countries con quattro record per country, name, population in millions. AUT - Austria - 9. IND - India - 1.339. RUS - Russia - 145. BRA - Brazil - 209. L’ultimo record è in grassetto.

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

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
Migliorare le prestazioni delle query in PostgreSQL

Right outer join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Una tabella countries con quattro record per country, name, population in millions. 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

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
Migliorare le prestazioni delle query in PostgreSQL

Right outer join

Una tabella athletes con quattro record per atleta e paese. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX.  L’ultimo record è in grassetto. Una tabella countries con quattro record per country, name, population in millions. 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

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
Migliorare le prestazioni delle query in PostgreSQL

Full outer join

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Piano di esecuzione della query

Più chef attorno a una grande pentola

  • Vincola il query planner
Athlete Nme Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
BRA Brazil 209
Migliorare le prestazioni delle query in PostgreSQL

Ayo berlatih!

Migliorare le prestazioni delle query in PostgreSQL

Preparing Video For Download...