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

Indeks SQL Server Mana yang harus dikelompokkan?

Frederik merangkumnya dengan baik, dan itulah yang juga diajarkan oleh Kimberly Tripp:kunci pengelompokan harus stabil (tidak pernah berubah), terus meningkat (IDENTITY INT), kecil dan unik.

Dalam skenario Anda, saya lebih suka meletakkan kunci pengelompokan pada kolom BIGINT daripada kolom VARCHAR(80).

Pertama-tama, dengan kolom BIGINT, cukup mudah untuk menerapkan keunikan (jika Anda tidak menegakkan dan menjamin keunikan sendiri, SQL Server akan menambahkan "uniquefier" 4-byte ke setiap baris Anda) dan itu BANYAK lebih kecil dari rata-rata VARCHAR(80).

Mengapa ukuran begitu penting? Kunci pengelompokan juga akan ditambahkan ke SETIAP dan setiap indeks non-cluster Anda - jadi jika Anda memiliki banyak baris dan banyak indeks non-cluster, memiliki 40-80 byte vs. 8 byte dapat dengan cepat menghasilkan BESAR perbedaan.

Juga, tip kinerja lain:untuk menghindari apa yang disebut pencarian bookmark (dari nilai dalam indeks non-cluster Anda melalui kunci pengelompokan ke halaman daun data aktual), SQL Server 2005 telah memperkenalkan gagasan "kolom yang disertakan" di indeks non-cluster Anda. Itu sangat membantu, dan sering diabaikan. Jika kueri Anda sering memerlukan bidang indeks ditambah hanya satu atau dua bidang lain dari database, pertimbangkan untuk menyertakannya untuk mencapai apa yang disebut "mencakup indeks". Sekali lagi - lihat artikel luar biasa Kimberly Tripp - dia adalah Dewi Pengindeksan SQL Server! :-) dan dia bisa menjelaskan hal itu jauh lebih baik daripada aku...

Singkatnya:letakkan kunci pengelompokan Anda di kolom kecil, stabil, dan unik - dan Anda akan melakukannya dengan baik!

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan nilai acak dari rentang di MS SQL?

  2. Menyimpan HTML di SQL Server

  3. SQL server, Konversi Detik ke Menit, Jam, Hari

  4. Kerangka Entitas 6 - Kueri pengaturan waktu

  5. Apa tipe data SYSNAME di SQL Server?