2010-12-13 15 views
9

Ho un database, che interrogo, e non sono sicuro di dove eseguire l'ordinamento dei risultati, finora ho le seguenti opzioni.Dove posso ordinare?

  • Alla query MySQL.
  • A livello di elenco (Utilizzando una LinkedList)
  • Ordinamento di un elenco non ordinato mediante comparatori prima di mostrare i risultati (sostanzialmente in jsp)

La lista è composta da ObjectDTO così dove sarebbe più efficace. Qualche idea?

+2

Nota che di solito si vorrebbe evitare di codice Java nei file JSP. Quindi, l'ultimo punto può essere meglio "fondamentalmente nel servlet". – BalusC

risposta

13

Se possibile, è necessario eseguire l'ordinamento nel database.

  • Il database può utilizzare gli indici. Se è disponibile un indice adatto, i risultati possono essere letti dal disco già in ordine, con un conseguente aumento delle prestazioni, senza che sia necessario alcun passaggio di ordinamento O (n log (n)).
  • Se sono necessari solo i primi risultati x, si riduce anche il trasferimento dei dati (sia il trasferimento di rete ridotto, sia l'accesso al disco ridotto se esiste un indice adatto).
+0

Quindi dovrei usare una LinkedList per mantenere l'ordine di inserimento? – Triztian

+2

@Triztian: un 'ArrayList' è migliore per il recupero veloce. A 'LinkedList' è solo più veloce per la rimozione (che non è necessario se l'unico scopo è quello di visualizzare i risultati). – BalusC

+0

Hmm, non lo sapevo, ho letto le interfacce e gli abstract di list e collezioni ma a volte confonde lo – Triztian

16

Database. Usando gli indici e altre informazioni sui dati, i db sono molto bravi in ​​questo.

+0

Sì, ho deciso che è il modo in cui lo farò grazie. – Triztian

0

Il migliore è nella query mySQL.

a) E 'facile da fare

b) Se si utilizza un indice del genere accade quando l'indice viene creato o quando le nuove righe vengono inserite automaticamente (a volte un indice ha bisogno di una riorganizzazione, ma questo è un amministratori db affari giornalieri, questo vale se il tavolo è molto grande).

e) Se l'indice comprende le colonne utilizzate nella clausola in cui l'accesso in generale, è più veloce

d) Non è necessario leggere l'intera tabella ogni volta per fare il tipo di persona

e) Anche se si dispone di alcun indice credo che il DB può fare il miglior ordinamento

Speranza che aiuta