2011-01-14 14 views
2

Ich habe eine indizierte Sicht in Sql Server 2008 erstellt. Um inkrementelle Population für Tabellen zu verwenden, müssen wir eine Timestamp-Spalte erstellen. Aber sollte ich diese Timestamp-Spalte in der Tabelle erstellen, auf die die View verweist? Wenn ja, sollte die Ansicht die Zeitstempelspalte zurückgeben (vielleicht muss sql die Ansicht abfragen, um die Zeitstempelspalte zu erhalten, und deshalb muss ich sie in meiner Ansicht zurückgeben).FullText in einer indizierten Sicht - Incremental Population

Antwort

2

Sie möchten, dass die Zeitstempelspalte in der Basistabelle erstellt wird, damit sie jedes Mal aktualisiert wird, wenn eine Zeile geändert wird. Sie sollten auch die Timestamp-Spalte in der Ansicht zurückgeben, da sie von der Volltext-Engine verwendet wird, um zu ermitteln, welche Zeilen seit der letzten Population geändert wurden.

Von this TechNet article:

SQL Server verwendet die Timestamp-Spalte Zeilen zu identifizieren, die seit der letzten Bevölkerung verändert haben. Die inkrementelle Population aktualisiert dann den Volltextindex für Zeilen hinzugefügt, gelöscht oder geändert nach der letzten Population, oder während die letzte Population in Bearbeitung war.
...

Am das Ende einer Bevölkerung, der Volltext Motor zeichnet einen neuen Zeitstempel Wert. Dieser Wert ist der größte Zeitstempel Wert, den SQL Gatherer angetroffen hat. Dieser Wert wird verwendet, wenn eine nachfolgende inkrementelle Population beginnt.

+0

Sind Sie wirklich sicher, dass ich auch die Timestamp-Spalte in der Ansicht zurückgeben muss? Das wird mich dazu bringen, alles zu tun, was ich bisher getan habe ... :) –

+0

@Rafael: Siehe meine bearbeitete Antwort. Ich habe einige zusätzliche Details hinzugefügt, wie die Volltext-Engine den Zeitstempel verwendet. –

+0

@Joe: Ja, das wusste ich. Aber ich bin nicht sicher, ob die Ansicht diesen Zeitstempel zurückgeben muss, da es überhaupt keinen Sinn ergibt. –

Verwandte Themen