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