Vše o joinech

Optimalizace výkonu dotazů v PostgreSQL

Amy McCarty

Instructor

Přehled kurzu

  • Struktura dotazů včetně joinů, poddotazů a dočasných tabulek
  • Omezování a agregace dat
  • Vlastnosti úložiště databáze a optimalizační nástroje
  • Plánování a spouštění dotazů
Optimalizace výkonu dotazů v PostgreSQL

Plánovač dotazů

Dotaz

  • Instrukce SQL

Restaurační číšník

Plán spuštění dotazu

  • Skutečné kroky

Více kuchařů okolo velkého hrnce

Optimalizace výkonu dotazů v PostgreSQL

Plánovač dotazů

Číšník přináší jídlo

Číšník přináší nápoje

Optimalizace výkonu dotazů v PostgreSQL

 

Co jsou joiny?

  • Kombinace více tabulek
Optimalizace výkonu dotazů v PostgreSQL

 

Co jsou joiny?

  • Kombinace více tabulek

Proč joiny používat?

  • Vyhledávací tabulky
  • Kombinace dat

Jak?

  • Inner a 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
Optimalizace výkonu dotazů v PostgreSQL

Inner joiny

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. 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
Optimalizace výkonu dotazů v PostgreSQL

Inner joiny

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Poslední záznam je tučně. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209. Poslední záznam je tučně.

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
Optimalizace výkonu dotazů v PostgreSQL

Inner joiny s USING

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. 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
Optimalizace výkonu dotazů v PostgreSQL

Inner joiny s USING

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Poslední záznam je tučně. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209. Poslední záznam je tučně.

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
Optimalizace výkonu dotazů v PostgreSQL

Left outer join

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. 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
Optimalizace výkonu dotazů v PostgreSQL

Left outer join

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. AUT - Austria - 9. IND - India - 1 339. RUS - Russia - 145. BRA - Brazil - 209. Poslední záznam je tučně.

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
Optimalizace výkonu dotazů v PostgreSQL

Right outer join

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. 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
Optimalizace výkonu dotazů v PostgreSQL

Right outer join

Tabulka athlete se čtyřmi záznamy pro atleta a zemi. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Poslední záznam je tučně. Tabulka country se čtyřmi záznamy pro zemi, název, počet obyvatel v milionech. 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
Optimalizace výkonu dotazů v PostgreSQL

Full outer join

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Plán spuštění dotazu

Více kuchařů okolo velkého hrnce

  • Omezuje plánovač dotazů
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
Optimalizace výkonu dotazů v PostgreSQL

Lass uns üben!

Optimalizace výkonu dotazů v PostgreSQL

Preparing Video For Download...