Rob Farley looks at ways of sorting data more efficiently:
Another option, which is more longwinded (some might suggest that would suit me – and if you thought that: Oi! Don’t be so rude!), and uses more reads, is to consider what we’d do in real life if we needed to do this.
If I had a pile of 73,595 orders, sorted by Salesperson order, and I needed to return them with a particular Salesperson first, I wouldn’t disregard the order they were in and simply sort them all, I’d start by diving in and finding the ones for Salesperson 7 – keeping them in the order they were in. Then I’d find the ones that weren’t the ones that weren’t Salesperson 7 – putting them next, and again keeping them in the order they were already in.
My first inclination is to think that this is a fragile solution—what about parameterization? Will that affect the execution plan in unexpected ways? I like the approach, however, and will have to add it to the toolbox for those cases in which it makes sense.