Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Indexneuerstellungsabfrage

Hallo

Alle Indizes in der SQL Server-Datenbank werden fragmentiert. Nachdem zugehörige Tabellen viele Aktualisierungen erhalten haben, Transaktionen löschen.

Wenn der Index in der Tabelle fragmentiert ist, werden alle mit dieser Tabelle verbundenen Transaktionen sehr langsam sein. Daher sollte der SQL Server-DBA häufig Indizes überwachen und feststellen, welche Indizes fragmentiert sind und welche nicht wie im folgenden Screenshot.

Sie können den fragmentierten Index mit dem folgenden Skript überprüfen. Geben Sie den Namen der SQL Server-Datenbank korrekt in der ersten Zeile ein, dann findet die Abfrage fragmentierte Indizes.

declare @db int
select @db=DB_ID('DEVECI')
select 'ALTER INDEX [' + i.name +'] on '+OBJECT_NAME(s.object_id)+' REBUILD WITH (ONLINE = ON)',
objname = OBJECT_NAME(s.object_id),
s.object_id,
index_name= i.name,
index_type_desc, 
avg_fragmentation_in_percent
from sys.dm_db_index_physical_stats(@db,null,null,null,null) as s
join sys.indexes i on i.object_id = s.object_id and i.index_id = s.index_id 
where avg_fragmentation_in_percent>30
order by avg_fragmentation_in_percent desc, page_count desc;