Tudo sobre joins

Melhorando o Desempenho de Consultas no PostgreSQL

Amy McCarty

Instructor

Visão geral do curso

  • Estrutura da consulta, incluindo joins, subconsultas e tabelas temporárias
  • Limitando e agregando dados
  • Propriedades de armazenamento e ferramentas de otimização
  • Planejamento e execução da consulta
Melhorando o Desempenho de Consultas no PostgreSQL

Planejador de consultas

Consulta

  • Instruções SQL

Um garçom de restaurante

Plano de (execução da) consulta

  • Etapas reais

Vários chefs em volta de uma grande panela

Melhorando o Desempenho de Consultas no PostgreSQL

Planejador de consultas

Garçom trazendo comida

Garçom trazendo bebidas

Melhorando o Desempenho de Consultas no PostgreSQL

 

O que são joins?

  • Combinam várias tabelas
Melhorando o Desempenho de Consultas no PostgreSQL

 

O que são joins?

  • Combinam várias tabelas

Por que usar joins?

  • Consultar tabelas de referência
  • Combinar dados

Como?

  • 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
Melhorando o Desempenho de Consultas no PostgreSQL

Inner joins

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 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
Melhorando o Desempenho de Consultas no PostgreSQL

Inner joins

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. O último registro está em negrito. Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 209. O último registro está em negrito.

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
Melhorando o Desempenho de Consultas no PostgreSQL

USING em inner joins

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 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
Melhorando o Desempenho de Consultas no PostgreSQL

USING em inner joins

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. O último registro está em negrito. Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 209. O último registro está em negrito.

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
Melhorando o Desempenho de Consultas no PostgreSQL

Left outer join

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 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
Melhorando o Desempenho de Consultas no PostgreSQL

Left outer join

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX.  Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 209. O último registro está em negrito.

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
Melhorando o Desempenho de Consultas no PostgreSQL

Right outer join

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 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
Melhorando o Desempenho de Consultas no PostgreSQL

Right outer join

Uma tabela de atletas com quatro registros de atleta e país. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX.  O último registro está em negrito. Uma tabela de países com quatro registros de código, nome, população em milhões. AUT - Áustria - 9. IND - Índia - 1.339. RUS - Rússia - 145. BRA - Brasil - 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
Melhorando o Desempenho de Consultas no PostgreSQL

Full outer join

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Plano (de execução) da consulta

Vários chefs em volta de uma grande panela

  • Restrições ao planejador de consultas
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
Melhorando o Desempenho de Consultas no PostgreSQL

Vamos praticar!

Melhorando o Desempenho de Consultas no PostgreSQL

Preparing Video For Download...