Verwenden von suchoptimierten Tabellen¶
Die Suchoptimierung wird für Benutzer im Allgemeinen unbemerkt im Hintergrund ausgeführt. Abfragen funktionieren auf dieselbe Weise, einige sind nur schneller. Es ist jedoch wichtig, dass Sie sich der möglichen Auswirkungen anderer Tabellenoperationen auf den Suchoptimierungsdienst oder umgekehrt bewusst sind.
Ändern der Tabelle¶
Ein Suchzugriffspfad wird ungültig, wenn der Standardwert einer Spalte geändert wird.
Um die Suchoptimierung erneut verwenden zu können, nachdem ein Suchzugriffspfad ungültig geworden ist, müssen Sie die SEARCH OPTIMIZATION-Eigenschaft für die Tabelle löschen und dann die SEARCH OPTIMIZATION-Eigenschaft wieder zur Tabelle hinzufügen.
Ein Suchzugriffspfad bleibt gültig, wenn Sie eine Spalte hinzufügen, löschen oder umbenennen:
Wenn Sie die Suchoptimierung für eine gesamte Tabelle ohne Angabe bestimmter Spalten aktiviert haben und eine Spalte zu der Tabelle hinzufügen, wird die neue Spalte automatisch zum Suchzugriffspfad hinzugefügt. Wenn Sie jedoch beim Aktivieren der Suchoptimierung für eine Spalte die ON-Klausel verwendet haben, werden neue Spalten nicht automatisch hinzugefügt.
Wenn Sie eine Spalte aus einer Tabelle löschen, wird die gelöschte Spalte automatisch aus dem Suchzugriffspfad entfernt.
Das Umbenennen einer Spalte erfordert keine Änderungen am Suchzugriffspfad.
Wenn Sie eine Tabelle löschen, werden auch die SEARCH OPTIMIZATION-Eigenschaft und die Suchzugriffspfade gelöscht. Beachten Sie Folgendes:
Bei Rücknahme des Löschens der Tabelle wird auch die Suchoptimierung als Eigenschaft der Tabelle wiederhergestellt.
Wenn Sie eine Tabelle löschen, hat der Suchzugriffspfad dieselbe Datenaufbewahrungsfrist wie die Tabelle.
Wenn Sie die SEARCH OPTIMIZATION-Eigenschaft aus der Tabelle löschen, wird auch der Suchzugriffspfad entfernt. Wenn Sie die SEARCH OPTIMIZATION-Eigenschaft wieder zur Tabelle hinzufügen, muss der Wartungsdienst den Suchzugriffspfad neu erstellen. (Es gibt keine Möglichkeit, das Löschen der Eigenschaft zurückzunehmen.)
Klonen von Tabelle, Schema oder Datenbank¶
Wenn Sie eine Tabelle, ein Schema oder eine Datenbank klonen, werden auch die SEARCH OPTIMIZATION-Eigenschaft und die Suchzugriffspfade jeder Tabelle geklont. (Durch das Klonen einer Tabelle, eines Schemas oder einer Datenbank wird ein Nullkopie-Klon jeder Tabelle und der entsprechenden Suchzugriffspfade erstellt.)
Beachten Sie, dass bei Verwendung von CREATE TABLE … LIKE zum Erstellen einer neuen Tabelle mit denselben Spalten wie die ursprüngliche Tabelle die SEARCH OPTIMIZATION-Eigenschaft nicht in die neue Tabelle kopiert wird.
Verwenden von Tabellen in einer sekundären Datenbank (Unterstützung der Datenbankreplikation)¶
Wenn bei einer Tabelle der Primärdatenbank die SEARCH OPTIMIZATION-Eigenschaft aktiviert ist, wird diese Eigenschaft in die entsprechende Tabelle der Sekundärdatenbank repliziert.
Suchzugriffspfade in der sekundären Datenbank werden nicht repliziert, sondern automatisch neu aufgebaut. Beachten Sie, dass dieser Prozess die gleichen Arten von Kosten verursacht, die unter Abschätzen und Verwalten der Kosten für die Suchoptimierung beschrieben sind.
Maskierungsrichtlinien und Zeilenzugriffsrichtlinien¶
Der Suchoptimierungsdienst ist vollständig kompatibel mit Tabellen, die Maskierungsrichtlinien und Zeilenzugriffsrichtlinien verwenden.
Allerdings kann bei aktivierter Suchoptimierung ein Benutzer, der einen Wert aufgrund einer Maskierungsrichtlinie oder einer Zeilenzugriffsrichtlinie nicht sehen kann, möglicherweise mit größerer Sicherheit ableiten, ob dieser Wert existiert oder nicht. Mit oder ohne Suchoptimierung können Unterschiede in der Abfragelatenz Hinweise auf das Vorhandensein oder Nichtvorhandensein von Daten geben, die einer Richtlinienbeschränkung unterliegen, was je nach Sensibilität der Daten ein Sicherheitsproblem darstellen kann. Dieser Effekt kann durch die Suchoptimierung noch verstärkt werden, da sie die Ausführung einer Abfrage, die keine Ergebnisse liefert, deutlich beschleunigen kann.
Angenommen, eine Zeilenzugriffsrichtlinie verhindert, dass ein Benutzer auf Zeilen mit country = 'US'
zugreift, aber die Daten enthalten keine Zeilen mit country = 'US'
. Angenommen, die Suchoptimierung ist für die Spalte country
aktiviert und der Benutzer führt eine Abfrage mit WHERE country = 'US'
aus. Die Abfrage gibt wie erwartet leere Ergebnisse zurück, aber die Abfrage wird mit der Suchoptimierung möglicherweise schneller ausgeführt als ohne. In diesem Fall kann der Benutzer anhand der für die Ausführung der Abfrage benötigten Zeit einfacher den Rückschluss ziehen, dass die Daten keine Zeile mit country = 'US'
enthalten.