Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Quando non viene specificato "Ordina per", quale ordine sceglie una query per il set di record?

Se non specifichi un ORDER BY , allora c'è NESSUN ORDINE definito.

I risultati possono essere restituiti in un ordine arbitrario e anche questo potrebbe cambiare nel tempo.

Non esiste un "ordine naturale" o qualcosa del genere in un database relazionale (almeno in tutto ciò che so). L'unico modo per ottenere un ordine affidabile è esplicitamente specificando un ORDER BY clausola.

Aggiornamento: per coloro che ancora non mi credono, ecco due ottimi post sul blog che illustrano questo punto (con esempi di codice!):

  • Conor Cunningham (architetto del team Core SQL Server Engine):Nessuna cintura di sicurezza - In attesa di ordine senza ORDINE PER
  • Alexander Kuznetsov:senza ORDER BY, non esiste un ordinamento predefinito (posta nell'archivio Web)