>> Merge Left Join (cost=9500.30..101672.51 rows=2629549 width=506)
> And the query does not return data though I have been waiting for > 10 mins. > > Do you have any idea ?
Unless you use a cursor, PostgreSQL interfaces typically don't show any response on the client side until all rows have been received and cached on the client side. That's estimated to be over 2.6 million rows in this case. That can take a while.
You might want to use a cursor....
If you are using psql client, using FETCH_COUNT to a small value will allow you to achieve cursor behaviour. psql starts returning batches of FETCH_COUNT number of rows .
E.g. \set FETCH_COUNT 1 will start fetching and displaying each row one by one.