As mentioned previously, indexes are a datastructure that allow for both quickly locating rows that satisfy some condition and for obtaining rows sorted by some order. To execute a regular index scan, Postgres scans through the index to find … Read the rest
Query execution in Postgres proceeds in two steps. First Postgres plans the query. This is where Postgres decides how it’s going to execute the query. The result of planning is a query plan which details specifically what kind of scans … Read the rest
In the last post, we discussed EXPLAIN and how it can be used to obtain the query plan for a query. EXPLAIN ANALYZE is a variation of EXPLAIN that provides additional information about the query. In addition to displaying all … Read the rest
If you are ever doing any sort of query optimization in Postgres, knowledge of EXPLAIN is an absolute must. EXPLAIN let’s you see what algorithms Postgres is using under the hood in order to execute a query. Let’s look at … Read the rest
This is the last part of a three part series examining the Postgres join algorithms.
While a hash join is usually the fastest join algorithm, it is only so when it can be performed in memory. When Postgres thinks the hash … Read the rest
This is part two of a three part series examining the Postgres join algorithms.
Of the join algorithms Postgres has available, the hash join is usually the fastest. The main downside is hash joins only work where the join condition is an … Read the rest
This is the first part of a three part series examining the Postgres join algorithms.
For those who need a reminder, a join between two tables results in every pair of rows where some condition is true. Given a query of … Read the rest
This is the final part of a three part series exploring the different ways Postgres can retrieve rows from a table.
One major restriction with regular index scans is that they can only use a single index. Sometimes a query … Read the rest
This is part two of a three part series examining the different ways Postgres can fetch rows from a table.
Usually a sequential scan winds up being pretty slow. A sequential scan needs to read the entire table in order … Read the rest