Improving Query Performance in PostgreSQL
Amy McCarty
Instructor
Joins
SELECT *
FROM TABLE_A AS A
INNER JOIN TABLE_B AS B
ON A.NAME = B.NAME
Joins to combine data
Joins to filter data
| visit_id | reason | patient_id |
|---|---|---|
| 01 | checkup | 999 |
| 02 | infection | 888 |
| patient_id | name | sex |
|---|---|---|
| 999 | Lotte Smith | F |
| 888 | Zhang Wei | M |
| 777 | Amelia Hernandez | F |
SELECT *
FROM appointments a
INNER JOIN patients p
ON a.patient_id = p.patient_id

SELECT *
FROM appointments a
INNER JOIN patients p
ON a.patient_id = p.patient_id
| visit_id | reason | patient_id | name | sex |
|---|---|---|---|---|
| 01 | checkup | 999 | Lotte Smith | F |
| 02 | infection | 888 | Zhang Wei | M |
SELECT *
FROM appointments a
LEFT JOIN patients p
ON a.patient_id = p.patient_id
AND p.sex = 'M'

SELECT *
FROM appointments a
LEFT JOIN patients p
ON a.patient_id = p.patient_id
AND p.sex = 'M'
| visit_id | reason | patient_id | name | sex |
|---|---|---|---|---|
| 01 | checkup | 999 | ||
| 02 | infection | 888 | Zhang Wei | M |
SELECT *
FROM appointments a
LEFT JOIN patients p
ON a.patient_id = p.patient_id
WHERE p.sex = 'M'
1) FROM

2) WHERE

SELECT *
FROM appointments a
LEFT JOIN patients p
ON a.patient_id = p.patient_id
WHERE p.sex = 'M'
| visit_id | reason | patient_id | name | sex |
|---|---|---|---|---|
| 02 | infection | 888 | Zhang Wei | M |
SELECT *
FROM appointments a
LEFT JOIN patients p
ON a.patient_id = p.patient_id
WHERE p.sex = 'M'
| visit_id | reason | patient_id | name | sex |
|---|---|---|---|---|
| 02 | infection | 888 | Zhang Wei | M |
SELECT *
FROM appointments a
LEFT JOIN patients p
ON a.patient_id = p.patient_id
AND p.sex = 'M'
| visit_id | reason | patient_id | name | sex |
|---|---|---|---|---|
| 01 | checkup | 999 | ||
| 02 | infection | 888 | Zhang Wei | M |
SELECT *
FROM appointments a
INNER JOIN patients p
ON a.patient_id = p.patient_id
WHERE p.sex = 'M'
| visit_id | reason | patient_id | name | sex |
|---|---|---|---|---|
| 02 | infection | 888 | Zhang Wei | M |
SELECT *
FROM appointments a
INNER JOIN patients p
ON a.patient_id = p.patient_id
AND p.sex = 'M'
Improving Query Performance in PostgreSQL