it-swarm-id.com

Bagaimana cara mengetahui kapan / jika saya memiliki terlalu banyak indeks?

Menjalankan Microsoft SQL Server Profiler setiap sekarang, itu menyarankan saya dengan sekelompok indeks dan statistik baru untuk membuat ("... 97% perkiraan peningkatan ...").

Dari pemahaman saya, setiap indeks yang ditambahkan dapat membuat kueri SQL SELECT lebih cepat tetapi juga permintaan UPDATE atau INSERT lebih lambat karena indeks harus disesuaikan.

Yang saya heran adalah, kapan saya memiliki indeks/statistik "terlalu banyak"?

Mungkin tidak ada jawaban yang jelas tentang ini kecuali beberapa aturan praktis.

27
Uwe Keim

Profil beban Anda adalah faktor terpenting dalam menjawab pertanyaan ini.

  • Jika beban Anda baca-intensif, Anda ingin indeks memenuhi kueri terberat atau paling sering Anda.

  • Jika memuat Anda intensif-tulis, indeks dengan hati-hati. Indeks untuk memenuhi pencarian kebutuhan UPDATE, misalnya, serta satu atau dua SELECT Anda yang paling mahal.

  • Jika beban Anda adalah OLAP satu, indeks hemat karena Anda akan tetap memindai tabel target.

Bagaimana Anda tahu Anda memiliki terlalu banyak indeks?

  • Ketika Anda dapat melihat bahwa beberapa di antaranya tidak digunakan oleh pertanyaan apa pun.

  • HAPUS, UPDATE, atau INSERT yang sering ditampilkan menunjukkan rencana kueri yang melibatkan beberapa perubahan indeks mahal (yaitu indeks yang tidak dikelompokkan masukkan , pembaruan , atau hapus ) . Gunakan penilaian Anda untuk menentukan apakah hukuman pada pernyataan DML tersebut sepadan dengan perolehan yang Anda dapatkan dari indeks yang harus diperbarui.

24
Nick Chammas

Jika Anda memiliki indeks yang sedang dipertahankan tetapi tidak pernah digunakan (atau jarang digunakan) maka Anda memiliki terlalu banyak indeks. Jika semua indeks Anda digunakan untuk meningkatkan kinerja pengguna, maka Anda tidak memiliki terlalu banyak.

8
mrdenny