Где я сортирую? - PullRequest
       4

Где я сортирую?

9 голосов
/ 13 декабря 2010

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

  • По запросу MySQL.
  • На уровне списка (с использованием LinkedList)
  • Сортировка несортированного списка с использованием компараторов перед отображением результатов (в основном в jsp)

Список составлен ObjectDTO, так что где бы он был более эффективным. Есть идеи?

Ответы [ 3 ]

16 голосов
/ 13 декабря 2010

База данных.Используя индексы и другую информацию о данных, базы данных очень хороши в этом.

13 голосов
/ 13 декабря 2010

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

  • База данных может использовать индексы.Если имеется подходящий индекс, то результаты можно прочитать с диска уже в отсортированном порядке, что приведет к увеличению производительности - не требуется никакого дополнительного шага сортировки O (n log (n)).
  • Если вы толькоЕсли вам нужны первые x результаты, вы также минимизируете передачу данных (как сокращенную передачу по сети, так и ограниченный доступ к диску при наличии подходящего индекса).
0 голосов
/ 14 декабря 2010

Лучше всего по запросу MySQL.

а) Это легко сделать

b) Если вы используете индекс, сортировка происходит, когда индекс создается или когда новые строки вставляются автоматически (иногда индекс требует реорганизации, но это ежедневная задача администратора базы данных. Это применимо, если таблица очень большая. ).

e) Если в индекс включены столбцы, используемые в предложении where, то в целом доступ будет быстрее

d) Вам не нужно каждый раз читать всю таблицу, чтобы выполнить сортировку для себя

e) Даже если у вас нет индекса, я считаю, что БД может выполнить сортировку лучше всего

Надеюсь, это поможет

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