Aktivieren und Deaktivieren der Suchoptimierung

Um die Suchoptimierung zu aktivieren, verwenden Sie eine Rolle, die über die erforderlichen Berechtigungen verfügt, und dann aktivieren Sie sie für eine ganze Tabelle oder bestimmte Spalten mit dem Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION.

Erforderliche Zugriffssteuerungsrechte

Um die Suchoptimierung einer Tabelle hinzuzufügen, zu konfigurieren oder zu entfernen, müssen Sie über die folgenden Berechtigungen verfügen:

  • OWNERSHIP-Berechtigung für die Tabelle.

  • Berechtigung ADD SEARCH OPTIMIZATION für das Schema, das die Tabelle enthält So erteilen Sie diese Berechtigung:

    GRANT ADD SEARCH OPTIMIZATION ON SCHEMA <schema_name> TO ROLE <role>
    
    Copy

Um den Suchoptimierungsdienst für eine Abfrage zu verwenden, benötigen Sie nur die SELECT-Berechtigung für die Tabelle.

Sie benötigen keine zusätzlichen Berechtigungen. Da SEARCH OPTIMIZATION eine Tabelleneigenschaft ist, wird sie beim Abfragen einer Tabelle automatisch erkannt und (falls zutreffend) verwendet.

Konfigurieren der Suchoptimierung

Bemerkung

Das Hinzufügen einer Suchoptimierung zu einer großen Tabelle (mit Terabytes (TB) oder mehr an Daten) kann zu einem sofortigen Anstieg des Credit-Verbrauchs über einen kurzen Zeitraum führen.

Wenn Sie einer Tabelle eine Suchoptimierung hinzufügen, beginnt der Wartungsdienst sofort im Hintergrund mit dem Aufbau der Suchzugriffspfade für die Tabelle. Wenn die Tabelle groß ist, kann der Wartungsdienst diese Arbeit massiv parallelisieren, was in kurzer Zeit zu erhöhten Kosten führen kann.

Bevor Sie die Suchoptimierung einer großen Tabelle hinzufügen, führen Sie eine Kostenschätzung durch, damit Sie wissen, was Sie zu erwarten haben.

Wenn Sie die Suchoptimierung aktivieren, haben Sie die Wahl, sie für eine ganze Tabelle oder für bestimmte Spalten in der Tabelle zu aktivieren.

  • Wenn Sie die Suchoptimierung für eine ganze Tabelle aktivieren, wird sie für Point-Lookup-Abfragen für alle in Frage kommenden Spalten aktiviert.

    Um die Suchoptimierung für eine ganze Tabelle zu aktivieren, verwenden Sie den Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION ohne ON-Klausel.

  • Durch die Aktivierung der Suchoptimierung für bestimmte Spalten wird vermieden, dass Credits für das Erstellen von Suchzugriffspfaden für Spalten verbraucht werden, die Sie nicht häufig in Abfragen verwenden. Außerdem können Sie zusätzliche Abfragetypen auswählen, die für jede Spalte optimiert werden sollen, wodurch sich die Leistung möglicherweise weiter verbessert.

    Um die Suchoptimierung für bestimmte Spalten zu aktivieren, indem Sie die zu optimierenden Abfragetypen angeben, verwenden Sie die ON-Klausel im Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION. In der ON-Klausel in ADD SEARCH OPTIMIZATION geben Sie an, welche Spalten für die Suchoptimierung aktiviert werden sollen. Wenn Sie die Suchoptimierung für eine bestimmte Spalte aktivieren, können Sie auch eine Suchmethode angeben (z. B. EQUALITY für die Gleichheits- und IN-Suche, GEO für die GEOGRAPHY-Suche oder SUBSTRING für die Suche nach Teilzeichenfolgen). Sie können mehr als eine Suchmethode für dieselbe Spalte aktivieren.

Im Allgemeinen ist es eine bewährte Praxis, die Suchoptimierung nur für bestimmte Spalten zu aktivieren.

In den nächsten Abschnitten wird erläutert, wie Sie die Suchoptimierung für eine Tabelle konfigurieren:

Nachdem Sie die Suchoptimierung konfiguriert haben, können Sie Ihre Konfiguration überprüfen, um sicherzustellen, dass sie korrekt ist.

Sie können die Suchoptimierung von bestimmten Spalten oder ganzen Tabellen entfernen, wenn Sie festgestellt haben, dass die Suchoptimierung nicht genügend Nutzen bringt.

Aktivieren der Suchoptimierung für bestimmte Spalten

Um die Suchoptimierung für eine bestimmte Spalte zu konfigurieren, verwenden Sie den Befehl ALTER TABLEADD SEARCH OPTIMIZATION mit der ON-Klausel.

Bemerkung

Zum Ausführen dieses Befehls müssen Sie die Rolle verwenden, die über Berechtigungen zum Hinzufügen der Suchoptimierung zu der Tabelle verfügt.

Die ON-Klausel gibt an, dass Sie die Suchoptimierung für bestimmte Spalten konfigurieren möchten. Weitere Informationen zur Syntax finden Sie im Abschnitt zu ALTER TABLE … ADD SEARCH OPTIMIZATION.

Bemerkung

Wenn Sie nur die Suchoptimierung für Gleichheits- und IN-Prädikate auf allen anwendbaren Spalten der Tabelle anwenden möchten, finden Sie unter Aktivieren der Suchoptimierung für eine ganze Tabelle weitere Informationen.

Nachdem Sie diesen Befehl ausgeführt haben, können Sie überprüfen, ob die Spalten für die Suchoptimierung konfiguriert wurden.

Die nächsten Abschnitte enthalten Beispiele, die zeigen, wie Sie die Konfiguration für die Suchoptimierung angeben:

Beispiel: Unterstützung von Gleichheits- und IN-Prädikaten für bestimmte Spalten

Um die Suche mit Gleichheitsprädikaten für die Spalten c1, c2 und c3 in der Tabelle t1 zu optimieren, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2, c3);
Copy

Sie können dieselbe Suchmethode auch mehrmals in der ON-Klausel angeben:

-- This statement is equivalent to the previous statement.
ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1), EQUALITY(c2, c3);
Copy

Beispiel: Unterstützung von Gleichheits- und IN-Prädikaten für alle anwendbaren Spalten

Um die Suche mit Gleichheitsprädikaten für die alle anwendbaren Spalten der Tabelle zu optimieren, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(*);
Copy

Beachten Sie Folgendes:

Beispiel: Unterstützung unterschiedlicher Typen von Prädikaten

Um die Suche mit Gleichheitsprädikaten für die Spalten c1 und c2 und die Teilzeichenfolge-Suche für die Spalte c3 zu optimieren, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1, c2), SUBSTRING(c3);
Copy

Beispiel: Unterstützung verschiedener Prädikate für dieselbe Spalte

Um die Suche mit Gleichheitsprädikaten und Teilzeichenfolge-Prädikaten für dieselbe Spalte c1 zu optimieren, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1), SUBSTRING(c1);
Copy

Beispiel: Unterstützung von Gleichheits- und IN-Prädikaten für ein VARIANT-Feld

Um die Suche mit Gleichheitsprädikaten auf dem VARIANT-Feld uuid zu optimieren, das im Feld user der VARIANT-Spalte c4 verschachtelt ist, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c4:user.uuid);
Copy

Beispiel: Unterstützung von Geodatenfunktionen

Um die Suche mit Prädikaten zu optimieren, die Geodatenfunktionen mit GEOGRAPHY-Objekten in der Spalte c1 verwenden, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON GEO(c1);
Copy

Aktivieren der Suchoptimierung für eine ganze Tabelle

Um EQUALITY für alle Spalten der unterstützten Datentypen (außer VARIANT und GEOGRAPHY) anzugeben, verwenden Sie den Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION ohne ON-Klausel.

Bemerkung

Zum Ausführen dieses Befehls müssen Sie die Rolle verwenden, die über Berechtigungen zum Hinzufügen der Suchoptimierung zu der Tabelle verfügt.

Beispiel:

alter table test_table add search optimization;
Copy

Weitere Informationen dazu finden Sie im Abschnitt zur Suchoptimierung in ALTER TABLE.

Nachdem Sie diesen Befehl ausgeführt haben, können Sie überprüfen, ob die Spalten für die Suchoptimierung konfiguriert wurden.

Auswirkung auf nachträglich hinzugefügte Spalten

Nachdem Sie den Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION ohne ON-Klausel ausgeführt haben, werden alle Spalten, die der Tabelle später hinzugefügt werden, ebenfalls für die EQUALITY-Optimierung konfiguriert.

Wenn Sie ALTER TABLE … { ADD | DROP } SEARCH OPTIMIZATION auf derselben Tabelle mit ON-Klausel ausführen, werden alle Spalten, die der Tabelle später hinzugefügt werden, nicht automatisch für EQUALITY konfiguriert. Sie müssen ALTER TABLE … ADD SEARCH OPTIMIZATION ON … ausführen, um diese neu hinzugefügten Spalten für EQUALITY zu konfigurieren.

Überprüfen, ob eine Tabelle für Suchoptimierung konfiguriert ist

So überprüfen Sie, ob die Tabelle und deren Spalten für die Suchoptimierung konfiguriert wurden:

  1. Zeigen Sie die Konfiguration der Suchoptimierung für die Tabelle und deren Spalten an.

  2. Führen Sie den SHOW TABLES-Befehl aus, um zu überprüfen, ob die Suchoptimierung hinzugefügt wurde, und um festzustellen, in welchem Umfang die Tabelle optimiert wurde:

    Beispiel:

    SHOW TABLES LIKE '%test_table%';
    
    Copy

    In der Ausgabe dieses Befehls:

    • Prüfen Sie, ob SEARCH_OPTIMIZATION auf ON gesetzt ist, was darauf hinweist, dass die Suchoptimierung hinzugefügt wurde.

    • Überprüfen Sie den Wert von SEARCH_OPTIMIZATION_PROGRESS. Dieser gibt den Prozentsatz der Tabelle an, der bisher optimiert wurde.

      Wenn die Suchoptimierung zum ersten Mal zu einer Tabelle hinzugefügt wird, zeigen sich die Leistungsvorteile nicht sofort. Der Suchoptimierungsdienst beginnt mit dem Auffüllen von Daten im Hintergrund. Die Vorteile zeigen sich nach und nach, bis die Wartung den aktuellen Status der Tabelle erreicht.

      Bevor Sie eine Abfrage ausführen, um zu überprüfen, ob die Suchoptimierung funktioniert, warten Sie, bis dieser Wert anzeigt, dass die Tabelle vollständig optimiert wurde.

  3. Führen Sie eine Abfrage aus, um zu überprüfen, ob die Suchoptimierung funktioniert.

    Beachten Sie, dass das Snowflake-Optimierungsprogramm automatisch entscheidet, ob der Suchoptimierungsdienst für eine bestimmte Abfrage verwendet wird. Benutzer können nicht steuern, für welche Abfragen die Suchoptimierung verwendet wird.

    Wählen Sie eine Abfrage aus, die der Suchoptimierungsdienst optimieren soll. Siehe Identifizieren von Abfragen, die von der Suchoptimierung profitieren.

  4. Zeigen Sie auf der Web-UI den Abfrageplan für diese Abfrage an, und stellen Sie sicher, dass der Abfrageknoten „Search Optimization Access“-Teil des Abfrageplans ist.

Anzeigen der Suchoptimierungskonfiguration für eine Tabelle

Um die Konfiguration der Suchoptimierung für eine Tabelle anzuzeigen, verwenden Sie den Befehl DESCRIBE SEARCH OPTIMIZATION.

Angenommen, Sie führen die folgende Anweisung aus, um die Suchoptimierung für eine Spalte zu konfigurieren:

ALTER TABLE t1 ADD SEARCH OPTIMIZATION ON EQUALITY(c1);
Copy

Das Ausführen von DESCRIBE SEARCH OPTIMIZATION ergibt die folgende Ausgabe:

DESCRIBE SEARCH OPTIMIZATION ON t1;

+---------------+----------+--------+------------------+--------+
| expression_id |  method  | target | target_data_type | active |
+---------------+----------+--------+------------------+--------+
| 1             | EQUALITY | C1     | NUMBER(38,0)     | true   |
+---------------+----------+--------+------------------+--------+
Copy

Entfernen der Suchoptimierung aus bestimmten Spalten oder aus der gesamten Tabelle

Sie können die Suchoptimierungskonfiguration für bestimmte Spalten entfernen, oder Sie können die SEARCH OPTIMIZATION-Eigenschaft für die gesamte Tabelle entfernen.

Löschen der Suchoptimierung für bestimmte Spalten

Um die Konfiguration der Suchoptimierung für bestimmte Spalten zu löschen, verwenden Sie den folgenden Befehl: ALTER TABLEDROP SEARCH OPTIMIZATION mit ON-Klausel.

Angenommen, die Ausführung des Befehls DESCRIBE SEARCH OPTIMIZATION gibt die folgenden Ausdrücke aus:

DESCRIBE SEARCH OPTIMIZATION ON t1;

+---------------+-----------+-----------+-------------------+--------+
| expression_id |  method   | target    | target_data_type  | active |
+---------------+-----------+-----------+-------------------+--------+
|             1 | EQUALITY  | C1        | NUMBER(38,0)      | true   |
|             2 | EQUALITY  | C2        | VARCHAR(16777216) | true   |
|             3 | EQUALITY  | C4        | NUMBER(38,0)      | true   |
|             4 | EQUALITY  | C5        | VARCHAR(16777216) | true   |
|             5 | EQUALITY  | V1        | VARIANT           | true   |
|             6 | SUBSTRING | C2        | VARCHAR(16777216) | true   |
|             7 | SUBSTRING | C5        | VARCHAR(16777216) | true   |
|             8 | GEO       | G1        | GEOGRAPHY         | true   |
|             9 | EQUALITY  | V1:"key1" | VARIANT           | true   |
|            10 | EQUALITY  | V1:"key2" | VARIANT           | true   |
+---------------+-----------+-----------+-------------------+--------+
Copy

Um die Suchoptimierung für Teilzeichenfolgen auf Spalte c2 zu löschen, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 DROP SEARCH OPTIMIZATION ON SUBSTRING(c2);
Copy

Um die Suchoptimierung für alle Methoden auf Spalte c5 zu löschen, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 DROP SEARCH OPTIMIZATION ON c5;
Copy

Da die Spalte c5 für die Optimierung von Gleichheits- und Teilzeichenfolgen-Suche konfiguriert ist, wird mit der obigen Anweisung die Konfiguration für Gleichheits- und Teilzeichenfolgen-Suche für c5 gelöscht.

Um die Suchoptimierung für Gleichheit auf Spalte c1 und auch die durch die Ausdrucks-IDs 6 und 8 angegebene Konfiguration zu löschen, führen Sie die folgende Anweisung aus:

ALTER TABLE t1 DROP SEARCH OPTIMIZATION ON EQUALITY(c1), 6, 8;
Copy

Weitere Informationen dazu finden Sie im Abschnitt zu ALTER TABLE … DROP SEARCH OPTIMIZATION.

Entfernen der Suchoptimierung aus der Tabelle

So entfernen Sie die SEARCH OPTIMIZATION-Eigenschaft aus einer Tabelle:

  1. Wechseln Sie zu einer Rolle mit Berechtigungen zum Entfernen der Suchoptimierung aus der Tabelle.

  2. Führen Sie den Befehl ALTER TABLEDROP SEARCH OPTIMIZATION ohne ON-Klausel aus:

    ALTER TABLE [IF EXISTS] <table_name> DROP SEARCH OPTIMIZATION;
    
    Copy

    Beispiel:

    alter table test_table drop search optimization;
    
    Copy

Weitere Informationen dazu finden Sie im Abschnitt zu ALTER TABLE … DROP SEARCH OPTIMIZATION.