Jest to zgodne z projektem
SQL Server (lub dowolny RDBMS) nie gwarantuje, że wyniki zostaną zwrócone w określonej kolejności, jeśli nie ORDER BY
została określona klauzula. Niektórzy uważają, że wiersze są zawsze zwracane w kolejności indeksów klastrowych lub kolejności dysków fizycznych, jeśli nie określono klauzuli order by. Jest to jednak niepoprawne, ponieważ istnieje wiele czynników, które mogą zmienić kolejność wierszy podczas przetwarzania zapytania. Równoległe złączenie HASH jest dobrym przykładem dla operatora, który zmienia kolejność wierszy.
Jeśli określisz ORDER BY
SQL Server posortuje wiersze i zwróci je w żądanej kolejności. Jeśli jednak ta kolejność nie jest deterministyczna, ponieważ masz zduplikowane wartości, w każdej „grupie wartości” kolejność jest „losowa” z tych samych powodów, o których wspomniano powyżej.
Jedynym sposobem zagwarantowania deterministycznej kolejności jest uwzględnienie gwarantowanej unikatowej kolumny lub grupy kolumn (na przykład klucza podstawowego) w ORDER BY
klauzula.