Improving Query Performance in PostgreSQL
Amy McCarty
Instructor
What?
Why?
How?
| holiday | holiday_type | country_code |
|---|---|---|
| Epiphany | religious | CZE |
| Epiphany | religious | FRA |
| Epiphany | religious | USA |
| Thanksgiving | secular | USA |
CREATE TEMP TABLE usa_holidays AS
SELECT holiday, holiday_type
FROM world_holidays
WHERE country_code = 'USA';
USA Holidays
| holiday | holiday_type |
|---|---|
| Epiphany | religious |
| Thanksgiving | secular |
| Table Stats | World Holidays | USA Holidays |
|---|---|---|
| Type | table | temp table |
| # Rows | 591,444 | 25 |
| Table Stats | World Holidays | USA Holidays |
|---|---|---|
| Type | view | temp_table |
| # Rows | 591,444 | 25 |
| Sources | 195 | 1 |
CREATE TEMP TABLE usa_holidays AS
SELECT holiday, holiday_type
FROM world_holidays
WHERE country_code = 'USA';
WITH religious AS
( SELECT usa.holiday, r.initial_yr
, r.celebration_dt
FROM religious r
INNER JOIN usa_holidays usa
USING (holiday) )
, secular AS
( SELECT usa.holiday, s.initial_yr
, s.celebration_dt
FROM secular s
INNER JOIN usa_holidays usa
USING (holiday) )
, ...
1 CREATE TEMP TABLE usa_holidays AS
2 SELECT holiday, holiday_type
3 FROM world_holidays
4 WHERE country_code = 'USA';
5
6 ANALYZE usa_holidays;
7
8 SELECT * FROM usa_holidays
Query planner (execution steps)

Improving Query Performance in PostgreSQL