Tất cả về join

Cải thiện hiệu năng truy vấn trong PostgreSQL

Amy McCarty

Instructor

Tổng quan khóa học

  • Cấu trúc truy vấn: join, subquery, bảng tạm
  • Giới hạn và tổng hợp dữ liệu
  • Thuộc tính lưu trữ và công cụ tối ưu
  • Lập kế hoạch và thực thi truy vấn
Cải thiện hiệu năng truy vấn trong PostgreSQL

Bộ lập kế hoạch truy vấn

Truy vấn

  • Câu lệnh SQL

Một bồi bàn nhà hàng

Kế hoạch thực thi truy vấn

  • Các bước thực tế

Nhiều đầu bếp quanh một nồi lớn

Cải thiện hiệu năng truy vấn trong PostgreSQL

Bộ lập kế hoạch truy vấn

Bồi bàn mang đồ ăn

Bồi bàn mang đồ uống

Cải thiện hiệu năng truy vấn trong PostgreSQL

 

Join là gì?

  • Kết hợp nhiều bảng
Cải thiện hiệu năng truy vấn trong PostgreSQL

 

Join là gì?

  • Kết hợp nhiều bảng

Vì sao dùng join?

  • Tra cứu bảng
  • Tổng hợp dữ liệu

Cách dùng?

  • Inner và outer

 

Mã bán Ngày đặt Số tiền Mã KH
01 2019-02-02 145.30 911

 

ID Tên Khách hàng từ
911 Jim Smith 2019-01-01

 

Mã bán Ngày đặt Số tiền Tên
01 2019-02-02 145.30 Jim Smith
Cải thiện hiệu năng truy vấn trong PostgreSQL

Inner join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209

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

 

 

 

VĐV Country Country1 Tên Dân số (triệu)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Cải thiện hiệu năng truy vấn trong PostgreSQL

Inner join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Bản ghi cuối in đậm. Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209. Bản ghi cuối in đậm.

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

 

 

 

VĐV Country Country1 Tên Dân số (triệu)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Cải thiện hiệu năng truy vấn trong PostgreSQL

USING inner join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

VĐV Country Tên Dân số (triệu)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
Cải thiện hiệu năng truy vấn trong PostgreSQL

USING inner join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Bản ghi cuối in đậm. Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209. Bản ghi cuối in đậm.

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

VĐV Country Tên Dân số (triệu)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
Cải thiện hiệu năng truy vấn trong PostgreSQL

Left outer join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209

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

 

 

VĐV Country Country1 Tên Dân số (triệu)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
Cải thiện hiệu năng truy vấn trong PostgreSQL

Left outer join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX.  Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209. Bản ghi cuối in đậm.

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

 

 

VĐV Country Country1 Tên Dân số (triệu)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
Cải thiện hiệu năng truy vấn trong PostgreSQL

Right outer join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX. Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209

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

 

 

VĐV Country Country1 Tên Dân số (triệu)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
Cải thiện hiệu năng truy vấn trong PostgreSQL

Right outer join

Bảng vận động viên với bốn bản ghi gồm vận động viên và quốc gia. Jack - AUT. Aditya - IND. Mikhail - RUS. Javier - MEX.  Bản ghi cuối in đậm. Bảng quốc gia với bốn bản ghi gồm mã, tên, dân số (triệu). AUT - Áo - 9. IND - Ấn Độ - 1.339. RUS - Nga - 145. BRA - Brazil - 209.

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

 

 

VĐV Country Country1 Tên Dân số (triệu)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
Cải thiện hiệu năng truy vấn trong PostgreSQL

Full outer join

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • Kế hoạch (thực thi) truy vấn

Nhiều đầu bếp quanh một nồi lớn

  • Ràng buộc bộ lập kế hoạch truy vấn
Tên VĐV Country Country1 Tên Dân số (triệu)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
BRA Brazil 209
Cải thiện hiệu năng truy vấn trong PostgreSQL

Ayo berlatih!

Cải thiện hiệu năng truy vấn trong PostgreSQL

Preparing Video For Download...