Row_Number() OVER (ORDER BY (SELECT 1))
trik seharusnya TIDAK dilihat sebagai cara untuk menghindari perubahan urutan data yang mendasarinya. Ini hanya cara untuk menghindari server melakukan pengurutan tambahan dan tidak diperlukan (mungkin masih melakukan pengurutan tetapi biayanya akan seminimal mungkin jika dibandingkan dengan pengurutan berdasarkan kolom).
Semua kueri di server SQL BENAR-BENAR HARUS memiliki ORDER BY
klausa dalam kueri terluar agar hasil dapat dipesan dengan andal dengan cara yang terjamin.
Konsep "mempertahankan tatanan asli" tidak ada dalam database relasional. Tabel dan kueri harus selalu dianggap tidak berurutan sampai dan kecuali ORDER BY
klausa ditentukan dalam kueri terluar.
Anda dapat mencoba kueri tidak berurutan yang sama 100.000 kali dan selalu menerimanya dengan pemesanan yang sama, dan dengan demikian menjadi percaya bahwa Anda dapat mengandalkan pemesanan tersebut. Tapi itu akan menjadi kesalahan, karena suatu hari, sesuatu akan berubah dan tidak akan memiliki urutan yang Anda harapkan. Salah satu contohnya adalah ketika database ditingkatkan ke versi baru SQL Server--ini telah menyebabkan banyak kueri mengubah urutannya. Tapi itu tidak harus menjadi perubahan besar. Sesuatu seperti menambah atau menghapus indeks dapat menyebabkan perbedaan. Dan lebih banyak lagi:Menginstal paket layanan. Mempartisi tabel. Membuat tampilan terindeks yang menyertakan tabel yang dimaksud. Mencapai beberapa titik kritis di mana pemindaian dipilih alih-alih pencarian. Dan seterusnya.
Jangan mengandalkan hasil untuk dipesan kecuali Anda telah mengatakan "Server, ORDER BY
".