Re: Slow query on V12.
Luís Roberto Weck <[email protected]> Mon, 23 Sep 2019 16:12:02 -0300
| Newsgroups | gmane.comp.db.postgresql.performance |
|---|---|
| Message-ID | <[email protected]> |
Em 23/09/2019 16:03, Luís Roberto Weck escreveu: > Em 23/09/2019 15:43, nikhil raj escreveu: >> Hi, >> >> Can you check by vacuum analyze the database. And run the query. >> >> >> **Remember don't use Vacuum full. >> >> On Tue, 24 Sep 2019, 12:07 am Luís Roberto Weck, >> <[email protected] <mailto:[email protected]>> wrote: >> >> Hi! >> >> Recently I've been looking for bloat in my databases and found a >> query to show which tables are more bloated and by how much. >> >> This is the explain plan on v12.3: https://explain.depesz.com/s/8dW8C >> And this is with v11: https://explain.depesz.com/s/diXY >> >> Both databases have approx. the same size and have the same >> schema, but on v12 I the query takes much longer to run. >> >> > Hi! > > Thanks for the reply! > > Here's the plan after running vacuum analyze: > https://explain.depesz.com/s/lhcl > > There was no difference in execution time. This is the query that is actually slow: -- EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS) SELECT table_schema, table_name, n_live_tup::numeric as est_rows, pg_table_size(relid)::numeric as table_size FROM information_schema.columns JOIN pg_stat_user_tables as psut ON table_schema = psut.schemanameAND table_name = psut.relname LEFT JOIN pg_statsON table_schema = pg_stats.schemanameAND table_name = pg_stats.tablenameAND column_name = attname WHERE attname IS NULL AND table_schema NOT IN ('pg_catalog', 'information_schema') GROUP BY table_schema, table_name, relid, n_live_tup If I turn the left join to a inner join, the query runs very fast. Plans: LEFT JOIN: https://explain.depesz.com/s/i88x INNER JOIN: https://explain.depesz.com/s/ciSu Ofcourse, that's not what the full query needs