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