Wszystko o złączeniach

Optymalizacja wydajności zapytań w PostgreSQL

Amy McCarty

Instructor

Przegląd kursu

  • Struktura zapytań: złączenia, podzapytania i tabele tymczasowe
  • Ograniczanie i agregowanie danych
  • Właściwości baz danych i narzędzia optymalizacji
  • Planowanie i wykonywanie zapytań
Optymalizacja wydajności zapytań w PostgreSQL

Optymalizator zapytań

Zapytanie

  • Instrukcje SQL

Kelner w restauracji

Plan (wykonania) zapytania

  • Rzeczywiste kroki

Wielu kucharzy wokół dużego garnka

Optymalizacja wydajności zapytań w PostgreSQL

Optymalizator zapytań

Kelner przynoszący jedzenie

Kelner przynoszący napoje

Optymalizacja wydajności zapytań w PostgreSQL

 

Czym są złączenia?

  • Łączą wiele tabel
Optymalizacja wydajności zapytań w PostgreSQL

 

Czym są złączenia?

  • Łączą wiele tabel

Po co używać złączeń?

  • Tabele referencyjne
  • Łączenie danych

Jak?

  • Wewnętrzne i zewnętrzne

 

ID sprzedaży Data zam. Kwota Nr klienta
01 2019-02-02 145.30 911

 

ID Imię i nazwisko Klient od
911 Jim Smith 2019-01-01

 

ID sprzedaży Data zam. Kwota Imię i nazwisko
01 2019-02-02 145.30 Jim Smith
Optymalizacja wydajności zapytań w PostgreSQL

Złączenia wewnętrzne

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 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
Optymalizacja wydajności zapytań w PostgreSQL

Złączenia wewnętrzne

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Ostatni rekord pogrubiony. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 209. Ostatni rekord pogrubiony.

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
Optymalizacja wydajności zapytań w PostgreSQL

Złączenia wewnętrzne z USING

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 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
Optymalizacja wydajności zapytań w PostgreSQL

Złączenia wewnętrzne z USING

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Ostatni rekord pogrubiony. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 209. Ostatni rekord pogrubiony.

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
Optymalizacja wydajności zapytań w PostgreSQL

Lewe złączenie zewnętrzne

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 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
Optymalizacja wydajności zapytań w PostgreSQL

Lewe złączenie zewnętrzne

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 209. Ostatni rekord pogrubiony.

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
Optymalizacja wydajności zapytań w PostgreSQL

Prawe złączenie zewnętrzne

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 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
Optymalizacja wydajności zapytań w PostgreSQL

Prawe złączenie zewnętrzne

Tabela athletes z czterema rekordami: zawodnik i kraj. Jack – AUT. Aditya – IND. Mikhail – RUS. Javier – MEX. Ostatni rekord pogrubiony. Tabela countries z czterema rekordami: kraj, nazwa, ludność w milionach. AUT – Austria – 9. IND – Indie – 1 339. RUS – Rosja – 145. BRA – Brazylia – 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
Optymalizacja wydajności zapytań w PostgreSQL

Pełne złączenie zewnętrzne

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Plan (wykonania) zapytania

Wielu kucharzy wokół dużego garnka

  • Ogranicza optymalizator zapytań
Imię zawodnika 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
Optymalizacja wydajności zapytań w PostgreSQL

Lass uns üben!

Optymalizacja wydajności zapytań w PostgreSQL

Preparing Video For Download...