2010-01-28 10 views

risposta

9

Con un indice su order_date, hanno le stesse prestazioni.

Senza un indice, MAX è un po 'più veloce, poiché utilizzerà Stream Aggregation anziché Top N Sort.

1

direi il primo, il secondo perché richiede di passare attraverso una funzione di aggregazione.

Tuttavia, come ha affermato Marc_s, testarlo.

0

Non si può rispondere a questo senza conoscere almeno qualcosa sui propri indici (ne hai uno su customer_id, su order_date?), La quantità di dati nella tabella, lo stato delle tue statistiche etc. etc.

2

ORDER BY è quasi sempre il più lento. I dati della tabella devono essere ordinati.

Le funzioni di aggregazione non devono rallentare quanto un ordinamento.

Tuttavia, alcune funzioni aggregate utilizzano un ordinamento come parte della loro implementazione. Quindi un particolare set di tabelle in un particolare prodotto di database deve essere testato sperimentalmente per vedere quale è più veloce - per quel set di dati.

0

dipende da quanto è grande il tuo tavolo. Nella seconda query, suppongo che non sia necessario "TOP 1", poiché MAX restituisce solo un valore. Se fossi in te, userei la seconda query.

+0

Quello era un errore di copia/incolla. Grazie per la cattura. – Ron