Pavel Stehule <pavel.stehule@xxxxxxxxx> writes: > CTE scan has only 1100 rows, public.rhnpackagecapability has 490964 rows. > But planner does hash from public.rhnpackagecapability table. It cannot be > very effective. [ shrug... ] Without stats on the CTE output, the planner is very leery of putting it on the inside of a hash join. The CTE might produce output that ends up in just a few hash buckets, degrading the join to something not much better than a nested loop. As long as there's enough memory to hash the known-well-distributed table, putting it on the inside is safer and no costlier. regards, tom lane