Totul despre join-uri

Îmbunătățirea performanței interogărilor în PostgreSQL

Amy McCarty

Instructor

Prezentarea cursului

  • Structura interogărilor, inclusiv join-uri, subinterogări și tabele temporare
  • Limitarea și agregarea datelor
  • Proprietăți de stocare și instrumente de optimizare
  • Planificarea și execuția interogărilor
Îmbunătățirea performanței interogărilor în PostgreSQL

Planificatorul de interogări

Interogare

  • Instrucțiuni SQL

Un ospătar la restaurant

Plan de execuție a interogării

  • Pașii efectivi

Mai mulți bucătari în jurul unui vas mare de gătit

Îmbunătățirea performanței interogărilor în PostgreSQL

Planificatorul de interogări

Ospătar care aduce mâncare

Ospătar care aduce băuturi

Îmbunătățirea performanței interogărilor în PostgreSQL

 

Ce sunt join-urile?

  • Combină mai multe tabele
Îmbunătățirea performanței interogărilor în PostgreSQL

 

Ce sunt join-urile?

  • Combină mai multe tabele

De ce se folosesc join-urile?

  • Tabele de referință
  • Combinarea datelor

Cum?

  • Inner și 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
Îmbunătățirea performanței interogărilor în PostgreSQL

Inner join-uri

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 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
Îmbunătățirea performanței interogărilor în PostgreSQL

Inner join-uri

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Ultima înregistrare este îngroșată. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 209. Ultima înregistrare este îngroșată.

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
Îmbunătățirea performanței interogărilor în PostgreSQL

Inner join-uri cu USING

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 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
Îmbunătățirea performanței interogărilor în PostgreSQL

Inner join-uri cu USING

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Ultima înregistrare este îngroșată. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 209. Ultima înregistrare este îngroșată.

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
Îmbunătățirea performanței interogărilor în PostgreSQL

Left outer join

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 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
Îmbunătățirea performanței interogărilor în PostgreSQL

Left outer join

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 209. Ultima înregistrare este îngroșată.

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
Îmbunătățirea performanței interogărilor în PostgreSQL

Right outer join

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 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
Îmbunătățirea performanței interogărilor în PostgreSQL

Right outer join

Un tabel cu atleți cu patru înregistrări pentru atlet și țară. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Ultima înregistrare este îngroșată. Un tabel cu țări cu patru înregistrări pentru țară, nume, populație în milioane. AUT - Austria - 9. IND - India - 1.339. RUS - Rusia - 145. BRA - Brazilia - 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
Îmbunătățirea performanței interogărilor în PostgreSQL

Full outer join

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Plan de execuție a interogării

Mai mulți bucătari în jurul unui vas mare de gătit

  • Constrânge planificatorul de interogări
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
Îmbunătățirea performanței interogărilor în PostgreSQL

Hai să exersăm!

Îmbunătățirea performanței interogărilor în PostgreSQL

Preparing Video For Download...