Volltextindizes
Aktualisiert: 17. Juli 2006
Ein Volltextindex ist ein besonderer Typ eines tokenbasierten funktionellen Indexes, der durch das Microsoft-Volltextmodul für SQL Server (MSFTESQL) erstellt und gewartet wird. Der Vorgang der Erstellung eines Volltextindexes unterscheidet sich wesentlich vom Erstellen anderer Indextypen. Statt eine B-Struktur basierend auf einem Wert in einer bestimmten Zeile aufzubauen, erstellt MSFTESQL eine invertierte, gestapelte, komprimierte Indexstruktur basierend auf einzelnen Token aus dem zu indizierenden Text.
In SQL Server 2005 wird die Größe des Volltextindexes nur durch den verfügbaren Speicherplatz des Computers eingeschränkt, auf dem die Instanz von SQL Server ausgeführt wird.
Der Vorgang der Erstellung und Verwaltung eines Volltextindexes wird als Indexauffüllung bezeichnet. Microsoft unterstützt folgende Typen der Volltextindexauffüllung:
- Vollständige Auffüllung
- Auffüllung mithilfe von Änderungsnachverfolgung
- Inkrementelle, auf Timestamps basierende Auffüllung
Vollständige Auffüllung
Tritt in der Regel beim ersten Auffüllen eines Volltextkatalogs oder Volltextindexes auf. Anschließend können die Indizes durch auf Änderungsnachverfolgung basierende oder inkrementelle Auffüllung gewartet werden.
Während der vollständigen Auffüllung eines Volltextkatalogs werden für alle Zeilen in allen Tabellen, die von dem Katalog abgedeckt werden, Indexeinträge erstellt. Wenn die vollständige Auffüllung für eine Tabelle angefordert wird, werden Indexeinträge für alle Zeilen in dieser Tabelle erstellt.
Soll der Volltextindex bei seiner Erstellung nicht aufgefüllt werden, müssen Sie in der CREATE FULLTEXT INDEX-Anweisung zusammen mit der CHANGE TRACKING OFF-Option NO POPULATION angeben. Der Index wird erst aufgefüllt, wenn der Benutzer den ALTER FULLTEXT INDEX-Befehl mit einer der Klauseln START FULL, INCREMENTAL oder UPDATE POPULATION ausführt.
Auffüllung mithilfe von Änderungsnachverfolgung
SQL Server unterhält eine Aufzeichnung der Zeilen, die in einer Tabelle geändert wurden, die für die Volltextindizierung eingerichtet wurde. Diese Änderungen werden an den Volltextindex weitergegeben.
Sie starten die Änderungsnachverfolgung, indem Sie in der CREATE FULLTEXT INDEX-Anweisung die WITH CHANGE_TRACKING-Option angeben. Wenn Sie die Änderungsnachverfolgung verwenden, können Sie angeben, wie die Änderungen an den Volltextindex weitergegeben werden.
Hinweis: |
---|
Voraussetzung für die Auffüllung mithilfe der Änderungsnachverfolgung ist eine erste Auffüllung des betreffenden Volltextindexes. |
Verwenden Sie in der CREATE FULLTEXT INDEX- oder ALTER FULLTEXT INDEX-Anweisung die AUTO-Option, um Änderungen automatisch an den Volltextindex weiterzugeben.
Wenn Sie die MANUAL-Option angeben, können die Änderungen manuell weitergegeben werden. Dies geschieht entweder nach einem Zeitplan oder mithilfe des SQL Server-Agents, oder Sie geben die Änderungen selbst manuell weiter.
Hinweis: |
---|
Mit der Änderungsnachverfolgung ist ein geringfügiger Verwaltungsaufwand verbunden. Verwenden Sie die CHANGE TRACKING OFF-Option, wenn Änderungen durch SQL Server nicht nachverfolgt werden sollen. |
Inkrementelle, auf Timestamps basierende Auffüllung
Bei der inkrementellen Auffüllung wird der Volltextindex bezüglich der Zeilen aktualisiert, die seit der letzten Auffüllung oder während des letzten Auffüllungsvorgangs hinzugefügt, gelöscht oder geändert wurden. Voraussetzung für die inkrementelle Auffüllung ist, dass die indizierte Tabelle eine Spalte vom timestamp-Datentyp aufweist. Ist keine timestamp-Spalte vorhanden, kann die inkrementelle Auffüllung nicht ausgeführt werden. Eine Anforderung für eine inkrementelle Auffüllung für eine Tabelle ohne timestamp-Spalte führt zu einer vollständigen Auffüllung.
Anforderungen für eine inkrementelle Auffüllung werden als vollständige Auffüllung implementiert, wenn sich Metadaten, die sich auf den Volltextindex für die Tabelle auswirken, seit der letzten Auffüllung geändert haben. Dies umfasst Änderungen an Spalten-, Index- oder Volltextindexdefinitionen.
Am Ende einer Auffüllung wird von SQL Gatherer ein neuer timestamp-Wert aufgezeichnet. Dieser Wert entspricht dem größten in SQL Gatherer aufgetretenen timestamp-Wert. Der Wert wird verwendet, wenn eine nachfolgende inkrementelle Auffüllung gestartet wird.
Siehe auch
Konzepte
Grundlegendes zur Volltextsuche
Andere Ressourcen
CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
17. Juli 2006 |
|