提升 PostgreSQL 查询性能
Amy McCarty
Instructor
查询(Query)

查询(执行)计划



什么是连接?
什么是连接?
为何使用连接?
如何连接?
| 销售ID | 下单日期 | 金额 | 客户号 |
|---|---|---|---|
| 01 | 2019-02-02 | 145.30 | 911 |
| ID | 姓名 | 成为客户日期 |
|---|---|---|
| 911 | Jim Smith | 2019-01-01 |
| 销售ID | 下单日期 | 金额 | 姓名 |
|---|---|---|---|
| 01 | 2019-02-02 | 145.30 | Jim Smith |

SELECT *
FROM athletes a
INNER JOIN countries c
ON a.country = c.country
| 运动员 | 国家 | 国家1 | 名称 | 人口(百万) |
|---|---|---|---|---|
| Jack | AUT | AUT | Austria | 9 |
| Aditya | IND | IND | India | 1,339 |
| Mikhail | RUS | RUS | Russia | 145 |

SELECT *
FROM athletes a
INNER JOIN countries c
ON a.country = c.country
| 运动员 | 国家 | 国家1 | 名称 | 人口(百万) |
|---|---|---|---|---|
| Jack | AUT | AUT | Austria | 9 |
| Aditya | IND | IND | India | 1,339 |
| Mikhail | RUS | RUS | Russia | 145 |

SELECT *
FROM athletes
INNER JOIN countries
USING (country)
| 运动员 | 国家 | 名称 | 人口(百万) |
|---|---|---|---|
| Jack | AUT | Austria | 9 |
| Aditya | IND | India | 1,339 |
| Mikhail | RUS | Russia | 145 |

SELECT *
FROM athletes
INNER JOIN countries
USING (country)
| 运动员 | 国家 | 名称 | 人口(百万) |
|---|---|---|---|
| Jack | AUT | Austria | 9 |
| Aditya | IND | India | 1,339 |
| Mikhail | RUS | Russia | 145 |

SELECT *
FROM athletes a
LEFT JOIN countries c
ON a.country = c.country
| 运动员 | 国家 | 国家1 | 名称 | 人口(百万) | |
|---|---|---|---|---|---|
| Jack | AUT | AUT | Austria | 9 | |
| Aditya | IND | IND | India | 1,339 | |
| Mikhail | RUS | RUS | Russia | 145 | |
| Javier | MEX |

SELECT *
FROM athletes a
LEFT JOIN countries c
ON a.country = c.country
| 运动员 | 国家 | 国家1 | 名称 | 人口(百万) |
|---|---|---|---|---|
| Jack | AUT | AUT | Austria | 9 |
| Aditya | IND | IND | India | 1,339 |
| Mikhail | RUS | RUS | Russia | 145 |
| Javier | MEX |

SELECT *
FROM athletes a
RIGHT JOIN countries c
ON a.country = c.country
| 运动员 | 国家 | 国家1 | 名称 | 人口(百万) |
|---|---|---|---|---|
| Jack | AUT | AUT | Austria | 9 |
| Aditya | IND | IND | India | 1,339 |
| Mikhail | RUS | RUS | Russia | 145 |
| BRA | Brazil | 209 |

SELECT *
FROM athletes a
RIGHT JOIN countries c
ON a.country = c.country
| 运动员 | 国家 | 国家1 | 名称 | 人口(百万) |
|---|---|---|---|---|
| Jack | AUT | AUT | Austria | 9 |
| Aditya | IND | IND | India | 1,339 |
| Mikhail | RUS | RUS | Russia | 145 |
| BRA | Brazil | 209 |
SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country

| 运动员名 | 国家 | 国家1 | 名称 | 人口(百万) |
|---|---|---|---|---|
| Jack | AUT | AUT | Austria | 9 |
| Aditya | IND | IND | India | 1,339 |
| Mikhail | RUS | RUS | Russia | 145 |
| Javier | MEX | |||
| BRA | Brazil | 209 |
提升 PostgreSQL 查询性能