I wrote:
> hubert depesz lubaczewski <depesz@depesz.com> writes:
>> it is selecting 20 rows out of 30 million. why is it:
>> 1. not using index only scan
>> 2. not using even normal index scan?
> It thinks the bitmap scan is cheaper.
No, wait, I take that back --- it can't do a plain indexscan because
ScalarArrayOp (=ANY(ARRAY)) isn't supported as a plain indexscan qual,
only as a bitmap qual. This is because we rely on the bitmap to
eliminate duplicates. It was never worth improving on that before;
but now that plain indexscans have a potential performance advantage,
we ought to think about ways to use ScalarArrayOp in plain indexscans.
regards, tom lane