I think you query is a bit confusing and have many subqueries, so I tried to simplify
If you cant´t have more import_num = 0 to the same login, try this SELECT count(*) FROM test_tab tab1 LEFT JOIN test_tab tab2 ON tab1.login = tab2.login AND tab2.import_num = '0' WHERE tab2.login IS NULL AND import_num = '4520440' otherwise try this SELECT count(*) FROM test_tab tab1 LEFT JOIN ( SELECT DISTINCT login FROM test_tab WHERE import_num = '0' ) tab2 ON tab1.login = tab2.login WHERE tab2.login IS NULL AND import_num = '4520440' Em seg, 21 de ago de 2017 às 15:47, Carlos Augusto Machado < caugus...@gmail.com> escreveu: > > Do you have an index on login column ? > > If not, try creating an index and taking off those DISTICTs. > > Em seg, 21 de ago de 2017 às 15:33, Justin Pryzby <pry...@telsasoft.com> > escreveu: > >> On Sat, Aug 19, 2017 at 10:37:56AM -0700, anand086 wrote: >> > >> +-----------------------------------------------------------------------------------------------------------------------------------------------------------+| >> > QUERY PLAN >> > >> |+-----------------------------------------------------------------------------------------------------------------------------------------------------------+| >> > Aggregate (cost=351405.08..351405.09 rows=1 width=8) >> >> Would you send explain ANALYZE and not just explain ? >> >> Justin >> >> >> -- >> Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org >> ) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgsql-performance >> >