Righe casuali in SQL Server 2000

Ordinare le righe di una tabella di Sql Server in modo casuale, cioè con ordinamento variabile di volta in volta, non è certamente una operazione di ogni giorno e, a prima vista, può anche sembrare una operazione complessa. In realtà è abbastanza semplice se ci si affida alla funzione NEWID() che ritorna un GUID univoco in assoluto; pertanto la seguente query:

T-SQL

   1: select * from orders order by newid()

restituirà un resultset ordinato ogni volta in modo differente.

Basandoci su questo esempio è anche possibile estrarre una riga diversa ogni volta che si esegue lo statement:

T-SQL

   1: select top 1 * from orders order by newid()

Quest'ultima istruzione andrebbe usata però con cautela su tabelle di grandi dimensioni, in quanto prima di restituire  la riga casuale l'engine SQL legge tutte le righe della tabella, per ognuna di esse calcola il GUID, ed infine ordina le stesse, come si evince dando uno sguardo al piano di esecuzione.

Print | posted on Friday, January 27, 2006 12:00 AM

Comments on this post

No comments posted yet.

Your comment:

 (will show your gravatar)
 
Please add 6 and 1 and type the answer here: