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

SQL Server - Kapan menggunakan Indeks Clustered vs non-Clustered?

Saya hanya ingin memberi peringatan:harap sangat hati-hati pilih indeks berkerumun Anda! Setiap tabel data "biasa" harus memiliki indeks berkerumun, karena memiliki indeks berkerumun memang mempercepat banyak operasi - ya, mempercepat , bahkan menyisipkan dan menghapus! Tetapi hanya jika Anda memilih yang baik indeks berkerumun.

Ini adalah paling direplikasi struktur data dalam database SQL Server Anda. Kunci pengelompokan juga akan menjadi bagian dari setiap indeks yang tidak berkerumun di meja Anda.

Anda harus sangat berhati-hati saat memilih kunci pengelompokan - seharusnya:

  • sempit (4 byte ideal)

  • unik (ini adalah "penunjuk baris". Jika Anda tidak membuatnya unik, SQL Server akan melakukannya untuk Anda di latar belakang, dengan biaya beberapa byte untuk setiap entri dikalikan jumlah baris dan jumlah indeks nonclustered yang Anda miliki - ini bisa sangat mahal!)

  • statis (jangan pernah berubah - jika memungkinkan)

  • idealnya semakin meningkat jadi Anda tidak akan berakhir dengan fragmentasi indeks yang mengerikan (GUD adalah kebalikan total dari kunci pengelompokan yang baik - untuk alasan tertentu)

  • itu harus non-nullable dan idealnya juga lebar tetap - a varchar(250) membuat kunci pengelompokan yang sangat buruk

Hal lain harus benar-benar menjadi tingkat kepentingan kedua dan ketiga di belakang poin-poin ini ....

Lihat beberapa Kimberly Tripp (Ratu Pengindeksan ) posting blog tentang topik - apa pun yang dia tulis di blognya sangat berharga - baca, cerna - jalani!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi String ke Tanggal/Waktu di SQL Server menggunakan CAST()

  2. Linq To Sql dan identity_insert

  3. Tomcat, Java &SQL Server 2008 R2:Tidak dapat membuat driver JDBC kelas '' untuk menghubungkan URL 'null'

  4. Perbedaan Antara Tabel DELETE dan TRUNCATE di SQL Server

  5. SSIS API:Bagaimana cara mengetahui Antarmuka untuk melemparkan __COMObject?