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

Bagaimana memutuskan kapan menggunakan indeks pada kolom tabel

Secara umum, strategi pengindeksan saya akan seperti ini (saya menggunakan SQL Server secara eksklusif untuk saat ini - sesuaikan dengan sistem database Anda sendiri sesuai kebutuhan):

  • pilih yang baik kunci pengelompokan - bukan GUID, bukan VARCHAR(250) atau sesuatu - bagus kunci pengelompokan sempit, unik, stabil, terus meningkat - sesuatu seperti INT IDENTITY sempurna. Jadikan ini sebagai kunci utama cluster Anda -> memberi Anda indeks pertama Anda di atas tabel

  • untuk setiap kolom yang digunakan sebagai kunci asing ke tabel lain - tambahkan index. Ini bisa berupa indeks kolom tunggal - atau mungkin indeks gabungan - apa pun yang paling cocok untuk kasus Anda. Kolom kunci asing harus menjadi pertama kolom dalam indeks itu (jika Anda menggunakan indeks gabungan) - jika tidak, manfaat untuk JOIN 's atau untuk memeriksa integritas referensial tidak akan tersedia untuk sistem Anda

Dan itu saja untuk saat ini.

Kemudian:jalankan sistem Anda - amati, dan ukur - buat garis dasar. Apakah aplikasinya cukup cepat? Jika ya -> selesai - pulang dan nikmati waktu luang Anda.

Jika tidak:mulailah mengumpulkan data dan indikasi mengapa aplikasi tidak cukup cepat. Lihat misalnya hal-hal seperti DMV di SQL Server yang memberi tahu Anda tentang kueri berkinerja terburuk, atau indeks DMV yang hilang . Analisis itu. Lihat apa yang bisa Anda tingkatkan. Tambahkan satu indeks pada satu waktu dan sekali lagi:amati, ukur, bandingkan dengan baseline Anda.

Jika Anda memiliki peningkatan -> biarkan indeks itu di tempatnya dan pengukuran ini adalah dasar baru Anda. Bilas dan ulangi sampai Anda (dan pengguna Anda) puas dengan kinerja aplikasi (dan lalu pulanglah dan nikmati waktu istirahatmu).

Pengindeksan berlebihan di SQL Server bisa lebih buruk daripada tidak memiliki indeks. Jangan memulai dengan terlalu banyak indeks! Hanya menetapkan baik clustered PK dan foreign key nonclustered index - itu saja - lalu amati, ukur, optimalkan &ulangi siklus tersebut.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:ekspor kueri sebagai file .txt

  2. Referensi Microsoft.SqlServer.Smo.dll

  3. set @var =exec stored_procedure

  4. Memperbarui nilai string dalam tabel yang akan di-flop seperti string YYYYMMDD ke string MMDDYYYY

  5. Salin data dari satu kolom ke kolom lain