Jerry Sievers <jerry@xxxxxxxxxxxxxxxx> writes: > Tom Lane <tgl@xxxxxxxxxxxxx> writes: >> What I still don't understand though is why you see it >> in 8.1 and not 8.0 ... the src/port/qsort.c code didn't change at all >> between those versions. Maybe 8.0 isn't taking the qsort code path, >> perhaps because it uses a shade more memory or some such. Could you >> try increasing maintenance_work_mem even more, like to 100M, >> and see if 8.0 gets slow? > I did as you suggest here; taking the MWM setting incrementally up to > nearly a Gig in 100M increments, also raised and lowered the work_mem > setting too. > Tried a dozen or more combos and in every case, the index built > quickly on 8.0.3. On further analysis, it seems the problem is dependent on the exact ordering of the inputs to the qsort function. So not only do you need maintenance_work_mem to be large enough that the code will try to use qsort, but the physical order of the rows in the table matters. I suspect that you are testing on an 8.0 table with a different physical row order --- if you drop the table and reload it from the same dump you loaded into 8.1, does it get slow? regards, tom lane