Untuk menjawab pertanyaan ini, lihat rencana kueri yang dihasilkan oleh keduanya.
SELECT pertama adalah pemindaian tabel sederhana, yang berarti menghasilkan baris dalam urutan alokasi. Karena ini adalah tabel baru, ini cocok dengan urutan Anda memasukkan catatan.
SELECT kedua menambahkan GROUP BY, yang diimplementasikan SQL Server melalui pengurutan yang berbeda karena perkiraan jumlah baris sangat rendah. Apakah Anda memiliki lebih banyak baris atau menambahkan agregat ke SELECT Anda, operator ini dapat berubah.
Misalnya, coba:
CREATE TABLE #Values ( FieldValue varchar(50) )
;WITH FieldValues AS
(
SELECT '4' FieldValue UNION ALL
SELECT '3' FieldValue UNION ALL
SELECT '2' FieldValue UNION ALL
SELECT '1' FieldValue
)
INSERT INTO #Values ( FieldValue )
SELECT
A.FieldValue
FROM FieldValues A
CROSS JOIN FieldValues B
CROSS JOIN FieldValues C
CROSS JOIN FieldValues D
CROSS JOIN FieldValues E
CROSS JOIN FieldValues F
SELECT
FieldValue
FROM #Values
GROUP BY
FieldValue
DROP TABLE #Values
Karena jumlah baris, ini berubah menjadi agregat hash, dan sekarang tidak ada pengurutan dalam rencana kueri.
Tanpa ORDER BY, SQL Server dapat mengembalikan hasil dalam urutan apa pun, dan urutan kembalinya adalah efek samping dari cara yang dianggapnya paling cepat mengembalikan data.