2010-12-13 40 views
9

J'ai une base de données, que je demande, et je ne suis pas sûr de l'endroit où effectuer le tri des résultats, jusqu'à présent, j'ai les options suivantes.Où trier?

  • À la requête MySQL.
  • Au niveau de la liste (à l'aide d'une LinkedList)
  • tri d'une liste non triée à l'aide des comparateurs avant d'afficher les résultats (essentiellement dans le jsp)

La liste est composée par ObjectDTO alors où serait-il plus efficace. Des idées?

+2

Notez que vous habituellement comme pour éviter le code Java dans les fichiers JSP. Donc, le dernier point peut mieux être "fondamentalement dans le servlet". – BalusC

Répondre

13

Vous devriez faire le tri dans la base de données si cela est possible.

  • La base de données peut utiliser des index. Si un index approprié est disponible, les résultats peuvent être lus à partir du disque dans l'ordre trié, ce qui entraîne une augmentation des performances - aucune étape supplémentaire de tri O (n log (n)) n'est requise.
  • Si vous avez seulement besoin des premiers résultats x, vous minimisez également le transfert de données (à la fois un transfert réseau réduit et un accès au disque réduit si un index approprié existe).
+0

Alors devrais-je utiliser une LinkedList pour conserver l'ordre d'insertion? – Triztian

+2

@Triztian: un 'ArrayList' est meilleur pour la récupération rapide. Un 'LinkedList' est seulement plus rapide pour la suppression (dont vous n'avez pas besoin si le seul but est d'afficher les résultats). – BalusC

+0

Hmm, je ne le savais pas, j'ai lu les Interfaces et les résumés sur la liste et les collections, mais parfois c'est confus – Triztian

16

Base de données. En utilisant des index et d'autres informations sur les données, les db sont très bons.

+0

Oui, j'ai décidé c'est comme ça que je vais le faire merci. – Triztian

0

Meilleur est à la requête mySQL.

a) Il est facile de faire

b) Si vous utilisez un index le genre se produit lorsque l'index est créé ou lorsque de nouvelles lignes sont insérées automatiquement (parfois un index a besoin d'une réorganisation, mais cela est un admins db affaires quotidiennes.Cela s'applique si la table est très énorme.).

e) Si l'index comprend les colonnes utilisées dans la clause where l'accès en général est plus rapide

d) Vous n'avez pas besoin de lire toute la table à chaque fois de faire le tri pour vous

e) Même si vous avez pas d'index, je crois que le DB peut faire le meilleur

tri Hope it helps