2009-05-18 16 views
6

Il servizio di Ottimizzazione guidata motore di database ha finalmente abbandonato il fantasma e non può più aiutarmi, quindi devo imparare un po 'di più sugli indici (non dovrebbero essere indici?).Gli indici di ordinamento discendenti

Penso di esserci più o meno lì. So quando utilizzare gli indici compositi, cosa includere nei miei indici, la differenza tra indici cluster e non cluster ecc.

Tuttavia ... Una cosa ancora mi confonde. Quando si crea un indice, c'è un ordinamento per l'indice. Capisco cosa significa questo, ma sto lottando per pensare a uno scenario in cui un indice di ordine inverso potrebbe essere utile. La mia ipotesi migliore è quella di accelerare le query che recuperano le righe che si verificano alla fine dell'indice ordinato in avanti, come le righe più recenti cronologicamente, ma francamente, sono più o meno imbattibile.

Qualcuno può illuminarmi?

+0

possibile duplicato di [indici SQL Server: crescente o decrescente, che differenza fa?] (Http://stackoverflow.com/questions/743858/sql-server-indexes-ascending-or-descending-what-difference -contravvenga-da-make) –

risposta

9

L'ordinamento di un indice è valido solo per un indice a più colonne. Per una singola colonna, SQL Sql può semplicemente utilizzare l'indice in ordine inverso, se desidera DESC in cui l'indice è ASC.

Per una ricerca a più colonne, l'ordinamento dell'indice è importante. Diciamo che hanno un indice su:

field1, field2 desc 

Questo sarebbe utile per questa query:

select field1, field2 from table order by field1, field2 desc 

E per questa query, dove l'indice può essere utilizzato in senso inverso:

select field1, field2 from table order by field1 desc, field2 

Ma per questa query, il server SQL richiede un ulteriore ordinamento in memoria:

select field1, field2 from table order by field1, field2 
0

Si ordina un indice decrescente quando si progetta quell'indice per una query che verrà ordinata decrescente.

1

Definire l'ordinamento giusto può potenzialmente eliminare la necessità di un passo sorta nel piano di query quando si definisce un ordine dal nell'istruzione SELECT.

Msdn article

0

Spesso c'è un pregiudizio per i dati più recenti, quindi se si ordina per "data discendente", di ottimizzare per questo caso d'uso.

Immagino che avrebbe più senso per le cose che sono numeriche piuttosto che alfabetiche.

Problemi correlati