A fragmentation de base de données se produit lorsque l'ordre logique de l'index de base de données ne correspond pas à la répartition physique des données sur le disque. Comme les changements de données dans la base de données , les tables d'index de la base de données dispersés sur tout le disque. Il augmente le temps nécessaire pour accéder aux données , ce qui entraîne une baisse des performances des applications. Les commandes de la console de base de données MSSQL vous permettent de reconstruire ou de défragmenter les index. Vous devez utiliser l'instruction DBCC DBEREINDEX de défragmenter un index de base de données MSSQL . Instructions 1 Cliquez sur le bouton "Démarrer " de Windows et sélectionnez « Tous les programmes ». Cliquez pour ouvrir la 2 Entrez les instructions SQL suivantes dans la fenêtre de console " console de gestion SQL. " : SET NOCOUNT ON ; DECLARE @ nomtable varchar ( 255); DECLARE @ execstr varchar (400); DECLARE @ objectid int; DECLARE @ indexid int; DECLARE @ frag décimal ; DECLARE @ MaxFrag décimal ; SELECT @ MaxFrag = 30,0 ; '.' DECLARE CURSOR tables pour ma SELECT TABLE_SCHEMA + + TABLE_NAME DE INFORMATION_SCHEMA.TABLES OÙ TABLE_TYPE = ' BASE TABLE' ; CREATE TABLE # fraglist (produits ObjectName char ( 255), < br > ObjectId int , AB IndexName char ( 255) , AB IndexId int , AB Lvl int , AB CountPages int , AB CountRows int , AB MinRecSize int , AB MaxRecSize int , AB AvgRecSize int , AB ForRecCount int , AB Etendu int , AB ExtentSwitches int , AB AvgFreeBytes int , AB AvgPageDensity int , AB ScanDensity décimal , AB BestCount int , AB < p> ActualCount int , AB décimal LogicalFrag , AB ExtentFrag décimal) ; tables ouvertes ; CHERCHER APRÈS à partir des tableaux INTO @ nomtable ; alors que @ @ FETCH_STATUS = 0 BEGIN INSERT INTO # fraglist EXEC (' DBCC SHOWCONTIG ( '' ' + @ nomtable + ''') FAST , TABLERESULTS , ALL_INDEXES , NO_INFOMSGS '); CHERCHER APRÈS à partir des tableaux INTO @ nomtable ; END; tables rapprochées ; DEALLOCATE tables ; DECLARE indices de curseur pour SELECT ObjectName , ObjectId , IndexId , LogicalFrag de # fraglist OÙ LogicalFrag > = @ MaxFrag ET INDEXPROPERTY ( ObjectId , IndexName , « IndexDepth ') > 0; open indexes ; CHERCHEZ SUIVANT à partir des indices INTO @ nomtable , @ objectid , @ indexid , @ frag ; alors que @ @ FETCH_STATUS = 0 BEGIN PRINT ' exécution DBCC INDEXDEFRAG (0 ,' + RTRIM (@ nomtable ) + ' , AB ' + RTRIM (@ indexid ) + ' ) - fragmentation actuellement ' + RTRIM ( convert ( varchar ( 15) , @ frag )) + '% ' ; SELECT @ execstr =' DBCC INDEXDEFRAG (0 , '+ RTRIM (@ objectid ) + ' , AB ' + RTRIM (@ indexid ) + ')' ; EXEC ( @ execstr ) ; CHERCHER APRÈS DE indices eN @ nomtable , @ objectid , @ indexid , @ frag ; END; indices FERMER ; DEALLOCATE indices ; < p> DROP TABLE # fraglist ; . GO 3 Cliquez sur "Fichier" et sélectionner "Exécuter" pour défragmenter l'index de base de données MSSQL
|