Adam Rich <adam.r@sbcglobal.net> writes:
> Please reference these explain plans. This is Pg 8.4.1
> http://explain-analyze.info/query_plans/4032-query-plan-2745
> http://explain-analyze.info/query_plans/4033-query-plan-2746
> First, could somebody explain what is leading the first query to choose
> a different plan that's much slower?
I think it's rejecting the HashAggregate plan because, with the
estimated-wider rows, the hash table is estimated to exceed work_mem.
> Second, why would it choose to sort on disk for what appears to be ~32MB
> of data, when my work_mem and temp_buffers are both 64 MB each?
The on-disk representation is more compact for various reasons.
> But it's only reporting 92kb of memory used? Why don't I see numbers
> between 64 MB and 128 MB for both the on-disk and in-memory plans?
You're not taking into account whether the sort is on pre-aggregation or
post-aggregation data.
regards, tom lane