En databas som ser ofta tillägger , raderar och uppdaterar tiden kommer , lider index fragmentering , saktar databasen ner . Microsofts SQL Server-databas programvara har två Structured Query Language (SQL ) kommandon som behandlas denna fråga : DBCC INDEXDEFRAG och DBCC DBREINDEX . Även om de båda lösa problemet , skillnaderna mellan de två diktera hur du använder dem . Action
DBREINDEX kommandot återskapas tabellen index från scratch , medan INDEXDEFRAG håller indexen , men omorganiserar deras innehåll . Du kan utföra motsvarande DBREINDEX genom att utfärda ett DROP INDEX och CREATE INDEX för varje index du vill bygga , DBREINDEX är snabbare och mindre benägna att stavfel . INDEXDEFRAG presskroppar indexet enligt dess fillfactor , det tar bort alla tomma sidor som skapas under defragmentering operationen
hastighet
Den relativa hastigheten hos de två kommandon beror på graden . av fragmentering i tabellens index . INDEXDEFRAG fungerar snabbare om indexen har en relativt låg mängd fragmentering : det tar mindre tid att söka och ordna några sidor i ett index än att återuppbygga det med DBREINDEX . Men , om du har låtit en stor del av passet eftersom du indexeras i databasen , kommer INDEXDEFRAG ta längre tid än DBREINDEX .
Exklusiv kontra delat tillträde
DBCC DBREINDEX kräver exklusiv tillgång till bordet , effektivt låsa alla användare och processer ut medan det fungerar . Tabellen index är ofullständig tills kommandot slutförs , så användardata begäran om uppgifter skulle misslyckas om de försökte komma åt bordet . Å andra sidan , INDEXDEFRAG helt enkelt blandar det befintliga indexet , så det gör att användare kan komma åt bordet .
Alternativ
Båda kommandona har en NOINFOMSGS alternativ , stänga av alla meddelanden som annars skulle komma upp under körningen . DBREINDEX tillåter dig att bygga en eller alla av en tabell index i ett enda kommando . INDEXDEFRAG fungerar på bara ett index i taget , så tabeller med flera index kräver flera kommandon . Den DBREINDEX låter dig ändra ett index s fillfactor , låter dig bygga mer eller mindre fritt utrymme i indexet . Index med mer ledigt utrymme tar mer diskutrymme , men kör lite snabbare om dina program ofta lägga till poster i tabellen .