Bisakah INDEX NONCLUSTERED yang tidak digunakan masih meningkatkan kecepatan permintaan?

13

Ini adalah situasi yang aneh, tetapi saya berharap seseorang memiliki jawaban.

Selama beberapa pemecahan masalah kinerja, kami menambahkan INDEX NONCLUSTERED ke tabel, seperti yang diminta oleh sp_BlitzIndex. Kami memeriksa penggunaannya pada hari berikutnya, dan itu menunjukkan 0 membaca ( 0 scan / mencari, 0 pencarian tunggal ), jadi kami menonaktifkannya.

Pada menit berikutnya, kami mendapatkan keluhan tentang kelambatan aplikasi yang sama (masalah kinerja) yang kami coba periksa & atasi sejak awal ketika kami menambahkan INDEX.

Sekarang, saya tahu secara teori, ini kedengarannya murni kebetulan. INDEX terbukti, terukur, TIDAK DIGUNAKAN . Menonaktifkannya TIDAK HARUS menyebabkan penurunan kinerja permintaan. Tapi itu hampir TERLALU kebetulan.

Pertanyaan

Jadi pertanyaan saya, cukup sederhana, adalah sebagai berikut:

Apakah mungkin , bahwa INDEK NONCLUSTERED, yang statistik penggunaannya (dari DMVs sp_BlitzIndex) menunjukkan TIDAK penggunaan, masih membantu kinerja permintaan entah bagaimana di meja yang terpengaruh?

NateJ
sumber
PS: Tolong lepaskan saya pepatah "Pergi mengujinya!" tanggapan; Saya harus menunggu sampai besok untuk mengujinya karena meja tersebut banyak digunakan dan indeks tidak akan diaktifkan kembali (dibangun kembali) sampai jendela pemeliharaan malam. Dan sifat masalah kinerja telah sporadis & sulit untuk mereproduksi; Saya tidak mengatakan "Tidak, saya tidak akan mengujinya", saya mengatakan saya tahu kita harus menguji, dan berencana untuk itu, tetapi saya meminta teori dan / atau pengetahuan pengalaman.
NateJ
1
Anda mungkin menemukan posting blog ini berguna; brentozar.com/archive/2016/11/…
Rich Benner

Jawaban:

13

Ya itu bisa, ketika SQL Server memutuskan bahwa statistik dari indeks itu lebih akurat / berguna dan menggunakan statistik itu untuk melakukan perkiraan dan membuat rencana.

Saya telah menemukan situasi ketika SQL Server telah memutuskan untuk menggunakan statistik dari satu indeks dan memindai / mencari indeks lain.

Sunting - Ini mungkin tidak berlaku karena saya baru menyadari bahwa Anda telah menonaktifkan indeks. Saya belum menguji skenario itu.

jesijesi
sumber
Terima kasih atas tanggapan yang jelas dan singkat! Ya tidak, itu tidak dinonaktifkan segera, itu diaktifkan & sepenuhnya "hidup" sampai saya menonaktifkannya beberapa detik sebelum-keluhan pengguna / kinerja-perlambatan. Anda baik :)
NateJ
1
@NateJ Teori itu dapat diuji dengan CREATE STATISTICSbukan CREATE INDEX.
Jakub Kania