Как и любой другой вопрос, связанный с производительностью, универсальный ответ ... «Это зависит». Тем не менее, я разработал предпочтение сортировки на клиенте. Мы пишем приложения на основе браузера, и мое определение клиента разделено между веб-серверами и реальным клиентом конечного пользователя, браузером. У меня есть две причины предпочитать сортировку на клиенте сортировке в БД.
Во-первых, существует проблема «правильного» места, чтобы сделать это с точки зрения дизайна. В большинстве случаев порядок данных - это не бизнес-правило, а скорее удобство для конечного пользователя, поэтому я рассматриваю его как функцию презентации и не люблю вставлять проблемы презентации в базу данных. Существуют исключения, например, когда текущая цена товара является самой последней в файле. Если вы получаете цену с чем-то вроде:
SELECT TOP 1 price
FROM itemprice
WHERE ItemNumber = ?
AND effectivedate <= getdate()
ORDER BY effectivedate DESC
Тогда порядок строк во многом является частью бизнес-правила и, очевидно, принадлежит базе данных. Однако, если вы сортируете по LastName, когда пользователь просматривает клиента по фамилии, а затем снова по FirstName, когда они щелкают по заголовку столбца FirstName, и снова по State, когда они щелкают по этому заголовку, тогда ваша сортировка является функцией презентации и принадлежит на уровне представления.
Вторая причина, по которой я предпочитаю сортировку на клиентском уровне, связана с производительностью. Веб-серверы масштабируются горизонтально, то есть, если я перегружаю свой веб-сервер пользователями, я могу добавить еще один, и другой, и другой. У меня может быть столько внешних серверов, сколько мне нужно, чтобы справиться с нагрузкой, и все работает просто отлично. Но, если я перегружу базу данных, я облажался. Базы данных масштабируются по вертикали, вы, конечно, можете использовать больше оборудования для решения проблемы, но в какой-то момент это становится непомерно дорогостоящим, поэтому я хотел бы позволить БД делать выбор, который она должна делать, и позволить клиенту выполнять сортировку, которая это может довольно просто.