Сортировка SQL: сервер против клиента - PullRequest
7 голосов
/ 27 октября 2010

В большинстве случаев для сортировки некоторых данных у нас есть два варианта:

  1. Сортировка на сервере SQL - используйте предложение ORDER BY
  2. Сортировка на клиентеодин мы получаем данные из базы данных

Когда бы вы использовали один над другим и почему?

Ответы [ 3 ]

23 голосов
/ 27 октября 2010

Всегда сортируйте, где это возможно, на SQL-сервере.

SQL абстрагирует этапы запросов к базе данных, сортировки и т. Д. Используйте как можно больше абстракций - зачем выбирать группу строка затем написать алгоритм сортировки, когда вы можете сделать это в SQL с ORDER BY.

См. также ответ Билла Карвина .

22 голосов
/ 27 октября 2010

Я бы использовал сортировку на сервере, когда набор данных большой, и я знаю, что в базе данных есть индекс, который поможет с сортировкой. Если индекса нет, я бы его создал.

Я бы использовал сортировку на клиенте только в том случае, если набор данных достаточно мал для удобного размещения в памяти приложения, а система приложений имеет эффективную функцию сортировки и в базе данных нет индекса. Но если набор данных настолько мал, затраты на сортировку на сервере, даже без индекса, вероятно, не составит труда.

8 голосов
/ 27 октября 2010

В общем случае вы хотите сортировать в базе данных, она более проста, требует меньше кода и будет более эффективной.

Однако существуют некоторые граничные условия, в которых сортировка на основе клиента имеет смысл.

Один набор данных, несколько сортировок, набор данных в памяти

Допустим, у вас есть графический интерфейс javascript, который просматривает таблицу с 500 строками, если вы хотите предоставить своим пользователям возможность сортировать поВ столбце, который они хотят, может иметь смысл выполнить сортировку в javascript, чтобы сократить время поездки на сервер.

Основным преимуществом использования сортировки на стороне клиента является сокращение сетевого трафика и использование базы данных (при предложении нескольких сортировок).Вы должны быть очень осторожны с производительностью сортировки и ограничениями памяти.Большие наборы данных на стороне клиента часто виртуализируются, поэтому на самом деле не все данные поступают на клиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...