Textindizes für Sichten

Mit der Funktion für gespeicherte Prozeduren bzw. der Tabellenwertfunktion können Sie Textindizes für Sichten erstellen. Allerdings dürfen Sie keine Skalarfunktionen, z. B. CONTAINS, einfügen.

Ein weiterer gravierender Nachteil besteht darin, dass für Sichten keine Auslöser erstellt werden können. Somit werden in den zu Grunde liegenden Basistabellen keine Änderungen erkannt.

Bei Indexteilaktualisierungen muss der Benutzer dementsprechend wissen, welches Dokument hinzugefügt, aktualisiert oder gelöscht wurde, um den Textindex mit der Datenbank zu synchronisieren. Zu diesem Zweck müssen alle Änderungen der Protokolltabelle hinzugefügt werden. Dieser Prozess wird im folgenden Beispiel illustriert:

  1. Verwenden Sie zur Erstellung der Basistabelle den folgenden Befehl:
    db2 "create table sample (key INTEGER not null  PRIMARY KEY, name 
                VARCHAR(50) not null, comment VARCHAR(90))" 
  2. Geben Sie folgende Befehle ein, um Einträge hinzuzufügen:
    db2 "insert into sample values(1,'Claus','works in room 301')"
    db2 "insert into sample values(2,'Manja','is in the same office
                                   as Juergen')"
    db2 "insert into sample values(2,'Juergen','has the longest way to
                                   Raiko')"
    db2 "insert into sample values(3,'Raiko','is sitting in the office
                                   besides Claus ')"
  3. Verwenden Sie zur Erstellung der Sicht den folgenden Befehl:
    db2 "create view sampleview as select key, comment from sample"
  4. Verwenden Sie die folgenden Befehle zum Erstellen, Aktualisieren und Aktivieren des Textindexes:
    db2text "create index indexview for text on hde.sampleview(comment)
                cache table (comment) maximum cache size 1 key columns
                for index on view (key)"
    db2text "update index indexview for text"
    db2text "activate cache for index indexview for text"
    Anmerkung

    Sie müssen die Cachetabelle angeben, um einen Textindex für eine Sicht erstellen zu können. Zur Erstellung der korrekten Protokolltabelle müssen Sie die Schlüsselspalten für den Index oder die Sicht angeben. Wenn Sie auf diese Weise einen Index erstellen, können Sie den Index auch mit der Tabellenwertfunktion verwenden.

    Wenn Sie die Suche über eine gespeicherte Prozedur verwenden, müssen Sie in einer verteilten DB2-Umgebung für Verwaltungstabellen auf einem einzelnen Knoten explizit einen Tabellenbereich angeben und diesen Knoten explizit aufrufen. Um sicherzustellen, dass Sie zum richtigen Knoten eine Verbindung herstellen, verwenden Sie die Umgebungsvariable DB2NODE.

  5. Verwenden Sie zur Aktualisierung der Tabelle die folgenden Befehle:
    db2 "insert into sample values(4,'Bernhard','is working in the same floor
                as Manja, but not as Claus')"
    db2 "insert into sample values(5,'Guenter','shares the office with Raiko')"
  6. Aktualisieren Sie anschließend die Protokolltabelle. Geben Sie folgenden Befehl ein, um den Namen der Protokolltabelle abzurufen:
    db2 "select INDSCHEMA,INDNAME,LOGVIEWSCHEMA,LOGVIEWNAME
                from db2ext.textindexes"
    Das Layout der Protokolltabelle sieht folgendermaßen aus:
    sqltype               sqllen  sqlname.data             sqlname.length
    --------------------  ------  -----------------------  --------------
    496   INTEGER              4  OPERATION                             9
    392   TIMESTAMP           26  TIME                                  4
    497   INTEGER              4  PK01                                  4   
    Verwenden Sie folgende Befehle, um der Protokolltabelle die Einträge hinzuzufügen:
    db2 "insert into sample values(0,CURRENT TIMESTAMP,4)"
    db2 "insert into sample values(0,CURRENT TIMESTAMP,5)"
    Der erste Wert beschreibt die Operation (0 = Einfügen, 1 = Aktualisieren, 2 = Löschen). Der zweite sollte immer CURRENT TIMESTAMP lauten und der letzte Wert sollte den Schlüssel angeben, der eingefügt wurde.
  7. Verwenden Sie folgenden Befehl, um den Index erneut zu aktualisieren:
    db2text "update index indexview for text"

Sie können nun mit Hilfe der gespeicherten Prozedur nach den neuen Werten suchen.