Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Urutan pernyataan SQL Select tanpa klausa Order By

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memaksa batas waktu kueri di SQL Server

  2. 3 Cara Menghitung Jumlah Tabel Sistem dalam Database SQL Server

  3. Nilai NULL di dalam klausa NOT IN

  4. Bagaimana Anda membuka file SDF (SQL Server Compact Edition)?

  5. Penyimpanan data terbaik untuk miliaran baris