if you have a big server, all your users have fast internet and there aren't enough users to slow down the server I think your current set-up would be best. In all other circumstances you should do the query only once and do the sorting on the user's pc so you don't even get a request if the users sorts the data in a different way.
It depends on whether pagination is supported or not.
If Pagination Supported:
Sorting can be "complete", which means you have to get the data from the server since the sorting criteria may change the record set. In this case, it is always better to fetch the sorted data from the database instead of a local file system xml and sort it -- data base is meant to do the data fetch job efficiently.
If pagination not supported: