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

Penyortiran Kunci Utama

Data disimpan secara fisik oleh indeks berkerumun, yang biasanya merupakan kunci utama tetapi tidak harus demikian.

Data dalam SQL tidak dijamin memiliki urutan tanpa klausa ORDER BY. Anda harus selalu menentukan klausa ORDER BY saat Anda membutuhkan data dalam urutan tertentu. Jika tabel sudah diurutkan seperti itu, pengoptimal tidak akan melakukan pekerjaan tambahan, jadi tidak ada salahnya menyimpannya di sana.

Tanpa klausa ORDER BY, RDBMS mungkin mengembalikan halaman cache yang cocok dengan kueri Anda saat menunggu catatan dibaca dari disk. Dalam hal ini, bahkan jika ada indeks di atas meja, data mungkin tidak masuk dalam urutan indeks. (Perhatikan ini hanya sebuah contoh - saya tidak tahu atau bahkan berpikir bahwa RDBMS dunia nyata akan melakukan ini, tetapi ini adalah perilaku yang dapat diterima untuk implementasi SQL.)

EDIT

Jika Anda memiliki dampak kinerja saat menyortir versus saat tidak menyortir, Anda mungkin mengurutkan pada kolom (atau kumpulan kolom) yang tidak memiliki indeks (berkelompok atau lainnya). Mengingat bahwa ini adalah deret waktu, Anda mungkin mengurutkan berdasarkan waktu, tetapi indeks berkerumun ada di bigint utama. SQL Server tidak tahu bahwa keduanya meningkat dengan cara yang sama, sehingga harus menggunakan semuanya.

Jika kolom waktu dan kolom kunci utama terkait berdasarkan urutan (satu bertambah jika dan hanya jika yang lain bertambah atau tetap sama), urutkan berdasarkan kunci utama. Jika mereka tidak terkait dengan cara ini, pindahkan indeks berkerumun dari kunci utama ke kolom apa pun yang Anda urutkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gabungkan PowerShell dan SQL Diagnostic Manager untuk mengotomatiskan pemantauan SQL Server

  2. SQL Server BCP mengekspor file yang rusak?

  3. Cara menggabungkan hasil dua kueri menjadi satu kumpulan data

  4. SQL Server di Linux

  5. Bagaimana cara mengembalikan angka acak sebagai kolom di SQL Server 2005?