On 03/03/15 03:08, Arthur Silva wrote:
> Does it always perform mergesort instead of quicksort when enabled?
Yes; there seemed no advantage to any additional complexity.
The merge consistently performs fewer comparisons than the
quicksort, on random input - and many fewer if there are
any sorted (or reverse-sorted) sections. However, it also
consistently takes slightly longer (a few percent). I was
unable to chase this down but assume it to be a cacheing
effect. So I don't currently think it should replace the
current sort for all use.
If the planner can identify cases where there is some pre-sort
in the input (CLUSTER was mentioned?), or maybe a correlated
index, it could be worthwhile.
Also useful might be very-expensive comparison cases,
and distinct-output cases (uniqification is supported at
each submerge stage, so data disappears early).
There's potential for running submerges in parallel
using multiple cores, but I've not worked on that.
--
Cheers, Jeremy