Database Reference
In-Depth Information
CHAPTER 9
Query Performance Tuning
Sooner or later, we'll all face a query that takes just a bit longer to execute than we have
patience for. The best and easiest fix is to perfect the underlying SQL, followed by adding
indexes and updating planner statistics. To guide you in these pursuits, PostgreSQL
comes with a built-in explainer that informs you how the query planner is going to
execute your SQL. Armed with your knack for writing flawless SQL, your instinct to
sniff out useful indexes, and the insight of the explainer, you should have no trouble
getting your queries to run as fast as your hardware budget will allow.
EXPLAIN
The easiest tool for targeting query performance problems is use of the EXPLAIN and
EXPLAIN (ANALYZE) commands. These have been around ever since the early years of
PostgreSQL. Since then it has matured into a full-blown tool capable of reporting highly
detailed information about the query execution. Along the way, it added more output
formats. Since version 9.0, you can even dump the output to XML, JSON, or YAML.
Perhaps the most exciting enhancement for the casual user came several years back
when pgAdmin introduced graphical EXPLAIN . With a hard and long stare, you can
identify where the bottlenecks are in your query, which tables are missing indexes, and
whether the path of execution took an unexpected turn.
EXPLAIN Options
To use the nongraphical version of EXPLAIN , simply preface your SQL with the words
EXPLAIN or EXPLAIN (ANALYZE) .
EXPLAIN by itself will give you just an idea of how the planner intends to execute the
query without running it. Adding the ANALYZE argument, as in EXPLAIN (ANALYZE) ,
will execute the query and give you a comparative analysis of expected versus actual.
 
Search WWH ::




Custom Search