Sql'de Tabloların indexlerini tekrar oluşturmak
- Yunus KÖSE
- 14 Mar
- 1 dakikada okunur
Öncelikle sql server'da hangi tabloların % kaç oranında bozulduğunu gösteren sorgu aşağıdaki gibidir;
SELECT
DB_NAME() AS VeriTabaniAdi,
OBJECT_NAME(IPS.object_id) AS TabloAdi,
SI.name AS IndeksAdi,
IPS.index_type_desc AS IndeksTuru,
IPS.avg_fragmentation_in_percent AS BozulmaOrani,
IPS.page_count AS SayfaSayisi
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') IPS
JOIN sys.indexes SI ON IPS.object_id = SI.object_id AND IPS.index_id = SI.index_id
WHERE IPS.index_id > 0
ORDER BY BozulmaOrani DESC;
Sonrasında
Bir sql veritabanında çok fazla yavaşlama varsa indexlerin düzelmesi için aşağıdaki kodu çalıştırmanız yeterli olacaktır.
ALTER INDEX ALL ON YKYAZILIMDB.dbo.TABLOADI REBUILD; --Tek Tablo
EXEC sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD'; --Tüm Tablolar
ALTER INDEX ALL ON YKYAZILIMDB.dbo.TABLOADI REBUILD WITH (ONLINE = ON); -- Sql Enterprise gerektirir
Comments