I have a query which is running slowly, and the query plan shows an
unexpected sequence scan where I'd have expected the planner to use an
index. Setting enable_seqscan=off causes the planner to use the index as
expected.
That hashjoin plan doesn't look at all unreasonable to me. The fact
that it actually comes out a lot slower than the nestloop with inner
indexscan suggests that you must be running with the large table
completely cached in RAM. If that's the normal state of affairs for your
database, you should consider decreasing the random_page_cost setting
so that the planner will plan appropriately.