Tidak, perilaku itu tidak bisa diandalkan. Urutan ditentukan oleh cara perencana kueri memutuskan untuk membangun kumpulan hasil. kueri sederhana seperti select * from foo_table
kemungkinan akan dikembalikan dalam urutan penyimpanannya di disk, yang mungkin dalam urutan kunci utama atau urutan pembuatannya, atau urutan acak lainnya. kueri yang lebih kompleks, seperti select * from foo where bar < 10
sebagai gantinya dapat dikembalikan dalam urutan kolom yang berbeda, berdasarkan pembacaan indeks, atau dengan urutan tabel, untuk pemindaian tabel. bahkan kueri yang lebih rumit, dengan banyak where
ketentuan, group by
klausa, union
s, akan berada dalam urutan apa pun yang diputuskan perencana paling efisien untuk dihasilkan.
Urutan bahkan dapat berubah di antara dua kueri identik hanya karena data yang telah berubah di antara kueri tersebut. klausa "di mana" mungkin dipenuhi dengan pemindaian indeks dalam satu kueri, tetapi penyisipan selanjutnya dapat membuat kondisi itu kurang selektif, dan perencana dapat memutuskan untuk melakukan kueri berikutnya menggunakan pemindaian tabel.
Untuk menempatkan poin yang lebih baik di atasnya. Sistem RDBMS memiliki mandat untuk memberi Anda tepat apa yang Anda minta, seefisien mungkin. Efisiensi tersebut dapat mengambil banyak bentuk, termasuk meminimalkan IO (baik ke disk maupun melalui jaringan untuk mengirim data kepada Anda), meminimalkan CPU, dan menjaga ukuran perangkat kerjanya tetap kecil (menggunakan metode yang memerlukan penyimpanan sementara minimal).
tanpa ORDER BY
klausa, Anda tidak akan bertanya tepatnya untuk urutan tertentu, sehingga RDBMS akan memberi Anda baris tersebut dalam urutan tertentu yang (mungkin) sesuai dengan beberapa aspek kueri yang kebetulan, berdasarkan algoritme mana pun yang diharapkan RDBMS untuk menghasilkan data tercepat.
Jika Anda peduli dengan efisiensi, tetapi tidak memesan, lewati ORDER BY
ayat. Jika Anda peduli dengan pesanan tetapi tidak efisiensi, gunakan ORDER BY
klausa.
Karena Anda benar-benar peduli dengan DUANYA gunakan ORDER BY
lalu sesuaikan kueri dan database Anda dengan hati-hati agar efisien.