We have a query that takes 1min to execute in postgres 10.6 and the same
executes in 4 sec in Oracle database. The query is doing 'select distinct'.
If I add a 'group by' clause, performance in postgres improves
significantly and fetches results in 2 sec (better than oracle). But
unfortunately, we cannot modify the query. Could you please suggest a way
to improve performance in Postgres without modifying the query.

*Original condition: time taken 1min*

Sort Method: external merge  Disk: 90656kB



*After removing distinct from query: time taken 2sec*

Sort Method: top-N heapsort  Memory: 201kB



*After increasing work_mem to 180MB; it takes 20sec*

Sort Method: quicksort  Memory: 172409kB



SELECT * FROM pg_stat_statements ORDER BY total_time DESC limit 1;

-[ RECORD 1
]-------+-----------------------------------------------------------------------------------------------------------------------------------------

userid              | 174862

dbid                | 174861

queryid             | 1469376470

query               | <query is too long. It selects around 300 columns>

calls               | 1

total_time          | 59469.972661

min_time            | 59469.972661

max_time            | 59469.972661

mean_time           | 59469.972661

stddev_time         | 0

rows                | 25

shared_blks_hit     | 27436

shared_blks_read    | 2542

shared_blks_dirtied | 0

shared_blks_written | 0

local_blks_hit      | 0

local_blks_read     | 0

local_blks_dirtied  | 0

local_blks_written  | 0

temp_blks_read      | 257

temp_blks_written   | 11333

blk_read_time       | 0

blk_write_time      | 0

Reply via email to