2010-12-13 18 views
9

Ich habe eine Datenbank, die ich abfrage, und ich bin mir nicht sicher, wo die Sortierung der Ergebnisse durchzuführen ist, bis jetzt habe ich die folgenden Optionen.Wo sortiere ich?

  • Bei der MySQL-Abfrage.
  • Auf Listenstufe (Unter Verwendung eines LinkedList)
  • eine unsortierte Liste Sortierung (grundsätzlich in der jsp)

Die Liste besteht durch ObjectDTO so wo wäre es effizienter sein, mit Komparatoren, bevor die Ergebnisse angezeigt. Irgendwelche Ideen?

+2

Hinweis tun kann glauben, dass Sie in der Regel Java-Code in JSP-Dateien vermeiden möchten. So kann der letzte Punkt besser "grundsätzlich im Servlet" sein. – BalusC

Antwort

13

Sie sollten die Sortierung in der Datenbank wenn möglich tun.

  • Die Datenbank kann Indizes verwenden. Wenn ein geeigneter Index verfügbar ist, können die Ergebnisse bereits in sortierter Reihenfolge von der Platte gelesen werden, was zu einer Leistungssteigerung führt - es ist kein zusätzlicher O (n log (n)) Sortierschritt erforderlich.
  • Wenn Sie nur die ersten x Ergebnisse benötigen, minimieren Sie auch die Datenübertragung (sowohl reduzierte Netzwerkübertragung, als auch reduzierten Festplattenzugriff, wenn es einen geeigneten Index gibt).
+0

Soll ich also eine LinkedList verwenden, um den Anzeigenauftrag beizubehalten? – Triztian

+2

@Triztian: Eine 'ArrayList' ist besser für den schnellen Abruf. Eine 'LinkedList' ist nur schneller zum Entfernen (die Sie nicht benötigen, wenn der einzige Zweck darin besteht, die Ergebnisse anzuzeigen). – BalusC

+0

Hmm, wusste das nicht, ich habe die Interfaces und Abstracts über Liste und Sammlungen gelesen, aber manchmal ist es verwirrend – Triztian

16

Datenbank. Mit Indizes und anderen Informationen über die Daten sind db's sehr gut darin.

+0

Ja, ich habe entschieden, dass ich es so machen werde, danke. – Triztian

0

Am besten ist bei der MySQL-Abfrage.

a) Es ist leicht

b) zu tun Wenn Sie die Art geschieht, einen Index verwenden, wenn der Index oder erstellt wird, wenn neue Zeilen automatisch eingefügt werden (manchmal ein Index eine Reorganisation muss, aber das ist ein db admins Tagesgeschäft.Dies gilt, wenn der Tisch sehr groß ist.).

e) Wenn der Index der Spalten enthält der Zugriff in der Regel in der where-Klausel verwendet wird, ist schneller

d) Sie brauchen nicht jedes Mal die gesamte Tabelle zu lesen, sich selbst von der Art zu tun

e) Auch wenn Sie keinen Index ich die DB die Sortier besten

Hoffe, es hilft