こんにちは
SQL Serverデータベース内のすべてのインデックスは断片化されます。関連するテーブルが多くの更新を取得した後、トランザクションを削除します。
テーブル内のインデックスが断片化されている場合、そのテーブルに関連するすべてのトランザクションは非常に遅くなります。そのため、SQL Server DBAはインデックスを頻繁に監視する必要があり、どのインデックスが断片化されているか、次のスクリーンショットとは異なります。
次のスクリプトで断片化されたインデックスを確認できます。 SQL Serverデータベース名を最初の行に正しく入力すると、クエリは断片化されたインデックスを検索します。
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;