Bonjour,
J'essaye de reconstruire mes index à l'aide du script suivant :
Mais lorsque je contrôle la fragmentation avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 DECLARE @TableName VARCHAR(255) DECLARE @sql NVARCHAR(500) DECLARE @fillfactor INT SET @fillfactor = 1 DECLARE TableCursor CURSOR FOR SELECT '['+OBJECT_SCHEMA_NAME([object_id])+'].['+name+']' AS TableName FROM sys.tables WHERE name NOT IN ('master','model','msdb','tempdb','distrbution') ORDER BY 1 OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN print 'Rebuilding index on table : '+@TableName SET @sql = 'ALTER INDEX ALL ON ' + @TableName + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')' EXEC (@sql) FETCH NEXT FROM TableCursor INTO @TableName END CLOSE TableCursor DEALLOCATE TableCursor GO
Mon avg_fragmentation_in_percent ne descend pas en dessous de 50% pour certaines tables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DB_NAME(database_id) as 'Db name', OBJECT_SCHEMA_NAME([object_id], database_id) as 'Schema name', OBJECT_NAME([object_id], database_id) as 'Table name', avg_fragmentation_in_percent, fragment_count, avg_fragment_size_in_pages FROM sys.dm_db_index_physical_stats(DB_ID('<MABASE>'), NULL, NULL, NULL , NULL) order by avg_fragmentation_in_percent desc
Est-ce normal ?
Une autre question : j'ai essayé plusieurs valeurs pour le fillfactor, comment déterminer la bonne valeur pour mes tables ?
Merci.
Partager