2010-12-13 5 views
9

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

  • В запросе MySQL.
  • На уровне списка (Использование LinkedList)
  • Сортировка несортированный список с помощью компараторов, прежде чем показывать результаты (в основном в СПЯ)

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

+2

Обратите внимание, что вы обычно хотели бы, чтобы избежать Java коды в JSP-файлах. Итак, последний пункт может быть лучше «в основном в сервлете». – BalusC

ответ

13

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

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

Должен ли я использовать LinkedList для сохранения порядка вставки? – Triztian

+2

@Triztian: 'ArrayList' лучше подходит для быстрого поиска. «LinkedList» работает быстрее только для удаления (что вам не нужно, если единственная цель - показать результаты). – BalusC

+0

Хмм, не знал этого, я прочитал «Интерфейсы» и рефераты о списке и коллекциях, но иногда его запутывает – Triztian

16

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

+0

Да, я решил, что так буду благодарен. – Triztian

0

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

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

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

е) Если индекс содержит столбцы, используемые в ИНЕКЕ доступ в целом быстрее

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

е) Даже если у вас нет индекса, я считаю, что DB может сделать сортировку лучше

Надеются, что это помогает