Improving Query Performance in PostgreSQL
Amy McCarty
Instructor
What?
Why?
How?
row | script_word | word_length |
---|---|---|
1 | goat | 4 |
2 | goat | 4 |
3 | dog | 3 |
15,782 | ... | ... |
row | english_word | word_length |
---|---|---|
1 | goat | 4 |
2 | turkey | 6 |
3 | ant | 3 |
171,476 | ... | ... |
SELECT AVG(word_length) AS avg_movie
, (SELECT AVG(word_length)
FROM english_language)
AS avg_english
FROM MOVIE
avg_movie | avg_english |
---|---|
3 | 4.5 |
row | script_word | word_length |
---|---|---|
1 | goat | 4 |
2 | goat | 4 |
3 | dog | 3 |
15,782 | ... | ... |
row | english_word | word_length |
---|---|---|
1 | goat | 4 |
2 | turkey | 6 |
3 | ant | 3 |
171,476 | ... | ... |
SELECT AVG(word_length) AS avg_movie
FROM english_language
WHERE word IN
(SELECT DISTINCT word FROM movie)
avg_movie |
---|
3 |
SELECT AVG(word_length) AS avg_movie
FROM (SELECT * FROM movie)
What?
Why?
How?
WITH english_cte AS ( SELECT word_length , COUNT(word) AS english_word_count FROM english_language GROUP BY word_length )
SELECT movie.word_length , COUNT(movie.word) AS movie_word_count , cte.english_word_count FROM movie INNER JOIN english_cte cte ON movie.word_length = cte.word_length GROUP BY movie.word_length, cte.english_word_count
Improving Query Performance in PostgreSQL