Bonjour,

J'essaye de reconstruire mes index à l'aide du script suivant :

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
Mais lorsque je contrôle la fragmentation avec :

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
Mon avg_fragmentation_in_percent ne descend pas en dessous de 50% pour certaines tables.
Est-ce normal ?

Une autre question : j'ai essayé plusieurs valeurs pour le fillfactor, comment déterminer la bonne valeur pour mes tables ?

Merci.