Ein Computer -Datenbank, die häufig sieht hinzufügt, löscht und aktualisiert wird , im Laufe der Zeit , leiden Indexfragmentierung , Verlangsamung der Datenbank ab . Microsoft SQL Server -Datenbank-Software hat zwei Structured Query Language (SQL) Befehle, die Adresse dieses Problem : DBCC INDEXDEFRAG und DBCC DBREINDEX . Obwohl sie beide lösen das Problem , Unterschiede zwischen den beiden diktieren, wie Sie sie verwenden. Aktion
DBREINDEX Befehl baut Tabellenindizes von Grund auf , während INDEXDEFRAG hält die Indizes , sondern ordnet deren Inhalte. Sie können den Gegenwert von DBREINDEX durch Ausgabe von DROP INDEX und CREATE INDEX ausführen für jeden Index, den Sie wollen , um wieder aufzubauen ; DBREINDEX ist schneller und weniger anfällig für Tippfehler . INDEXDEFRAG verdichtet den Index nach seinen fillfactor , es entfernt alle leeren Seiten während der Defragmentierung Betrieb erstellt
Geschwindigkeit
Die relative Geschwindigkeit der beiden Befehle ist abhängig vom Grad . Fragmentierung in die Indizes einer Tabelle . INDEXDEFRAG arbeitet schneller , wenn die Indizes eine relativ geringe Menge der Fragmentierung haben : Es dauert weniger Zeit zu scannen und zu ordnen ein paar Seiten in einem Index , als es mit DBREINDEX wieder aufzubauen. Allerdings, wenn Sie eine erhebliche Menge an passieren zu lassen haben, seit Sie die Datenbank indiziert , wird länger dauern als INDEXDEFRAG DBREINDEX .
Exclusive gegenüber Shared Access
DBCC DBREINDEX erfordert exklusiven Zugriff auf die Tabelle , effektiv Sperrung aller Benutzer und Prozesse , während es funktioniert. Die Tabelle Indizes sind bis zur Beendigung des Befehls unvollständig, so dass der Anwender Anforderungen für Daten würde scheitern, wenn sie Zugriff auf die Tabelle versucht. Auf der anderen Seite , INDEXDEFRAG einfach eine Neuverteilung der vorhandenen Index , so dass es ermöglicht Benutzern Zugriff auf die Tabelle .
Optionen
Beide Befehle haben eine NOINFOMSGS Option Ausschalten jeder Nachrichten , die sonst während der Ausführung kommen würde . DBREINDEX ermöglicht es Ihnen, eine oder alle Indizes einer Tabelle in einem einzigen Befehl wieder aufzubauen. INDEXDEFRAG funktioniert nur auf einem Index zu einer Zeit , so Tabellen mit mehreren Indizes erfordern mehrere Befehle . Das können Sie ändern DBREINDEX eines Index fillfactor , so dass Sie bauen mehr oder weniger freien Speicherplatz in den Index . Indizes mit mehr freiem Speicherplatz nehmen mehr Speicherplatz , sondern laufen etwas schneller, wenn Sie Ihre Programme häufig Datensätze hinzufügen auf den Tisch.