xplayn > share your experience     
RSS Feed Login     Password        » Registrati «
  
          Home
  Team & Mission
          News
  Development
  Database
          Pubblicazioni
  Articoli
  Tips
  IMHO
          Risorse
  Guide/Manuali/Tools
  Glossario SQLServer
  Collabora con noi
          Blogs
  Maurizio Tammacco
  Francesco Quaratino
  Renzo Pampani
          Formazione
  Database
 
                Partners
      http://www.dotnetside.org
 
 
Pubblicazioni »
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:

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:

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.

 
Autore E-Mail Web Site Data
Maurizio Tammacco maurizio@xplayn.org www.xplayn.org 27/01/2006
      ©Copyright 2005 - xplayn.org