Saya telah menjalankan skrip ini untuk mencoba menemukan indeks asing
select o.name as TableName, i.name as IndexName, p.reserved_page_count * 8.0 / 1024 as SpaceInMB, s.*
from sys.dm_db_index_usage_stats s
inner join sys.objects o on s.object_id = o.object_id
inner join sys.indexes i on i.index_id = s.index_id and i.object_id = o.object_id
inner join sys.dm_db_partition_stats p on i.index_id = p.index_id and o.object_id = p.object_id
where o.name = ‘TableName’
Saya tahu bahwa ketika last_user_seek / scan / lookup semuanya nol, bahwa tidak ada pengguna yang menggunakan indeks sejak restart terakhir. Tapi saya bertanya-tanya apa system_scans / lookup / seek ... are? Karena pada tabel tertentu saya menemukan 5 yang tidak memiliki aktivitas pengguna, tetapi satu memiliki aktivitas sistem 10 hari yang lalu. Adakah yang memiliki wawasan tentang pemindaian / pencarian / sistem apa yang mungkin dilakukan? Tabel-tabel ini tampaknya sangat diindeks dan saya ingin memotong lemak.
sql-server-2005
index
Aushin
sumber
sumber
Jawaban:
Pemeliharaan indeks (rekondisi / reorganisasi) dan aktivitas DBCC CHECKDB kemungkinan besar, mungkin pembaruan statistik. Adakah pemeliharaan terjadwal yang dikonfigurasi?
Jika tidak ada akses pengguna, buang mereka. Berhati-hatilah dengan kerangka waktu yang Anda putuskan tidak digunakan lagi. Apakah ada tugas pelaporan mingguan atau bulanan misalnya?
Saat Anda mencari, gali juga indeks duplikat .
Edit: tentang tautan SSC
Dari pemindaian cepat melalui utas, sepertinya orang-orang SSC memiliki pemikiran yang sama. Namun mereka mengambil sikap yang lebih hati-hati tentang kemungkinan penggunaan indeks-indeks ini "sesekali", mengambil posisi yang seseorang letakkan di sana karena suatu alasan, argumen yang masuk akal. Argumen balasannya adalah bahwa sering kali justru sebaliknya, seseorang meletakkannya di sana karena mereka pikir itu adalah hal yang benar untuk dilakukan tetapi melalui kurangnya pemahaman atau kurangnya pengujian, ternyata tidak.
Saya telah membawa beberapa sistem kembali dari tepi jurang dengan melakukan apa pun selain menjatuhkan indeks yang tidak digunakan dan terduplikasi. Pengindeksan berlebihan dapat menyebabkan kekacauan.
Ini sistem Anda, Anda perlu memahami dan menimbang risiko meninggalkan indeks ini di tempat atau menjatuhkannya. Jika Anda memutuskan untuk melanjutkan drop, mendokumentasikan apa yang Anda lakukan, mengapa Anda melakukannya, skrip indeks dan publikasikan ke semua pihak yang berkepentingan.
sumber
Glenn Berry telah menulis beberapa skrip hebat untuk membantu Anda menemukan indeks yang hilang. Saya sarankan menggunakan skripnya yang mengambil beberapa tebakan dari tugas untuk Anda. Skrip-skrip tersebut tidak hanya mencari null atau 0 pencarian pengguna / pemindaian / pencarian tetapi juga mencari indeks yang memiliki kecenderungan besar antara aktivitas baca dan aktivitas menulis, mungkin masih menghasilkan kinerja keseluruhan yang lebih baik dengan menjatuhkan. Saya akan memeriksa skripnya - Anda dapat memulai posting ini miliknya .
Saya tidak akan khawatir tentang aktivitas sistem. Itu bukan sesuatu yang akan menjadi lebih buruk jika Anda menghapus indeks, sebenarnya itu bisa menjadi aktivitas yang hanya terjadi pada indeks itu karena ada. Hal utama yang Anda pedulikan adalah aktivitas membaca pengguna dan menulis aktivitas pengguna dan menyeimbangkannya.
sumber
Ingatlah bahwa indeks juga memberikan informasi yang bermanfaat kepada Pengoptimal Kueri, meskipun tidak digunakan. Saya telah melakukan banyak hal tentang dampak Keunikan, misalnya. Jika Anda menghapus indeks unik karena tidak memiliki pencarian atau pemindaian, Anda masih dapat mempengaruhi kinerja.
sumber
Selain apa yang dinyatakan orang lain, indeks terhadap kolom FK yang dirujuk mungkin tidak pernah menunjukkan pencarian atau pemindaian tetapi digunakan di bawah sampul.
sumber