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>
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 TABLE … ADD 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
Beispiel: Unterstützung von Gleichheits- und IN-Prädikaten für alle anwendbaren Spalten
Beispiel: Unterstützung unterschiedlicher Typen von Prädikaten
Beispiel: Unterstützung verschiedener Prädikate für dieselbe Spalte
Beispiel: Unterstützung von Gleichheits- und IN-Prädikaten für ein VARIANT-Feld
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);
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);
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(*);
Beachten Sie Folgendes:
Wie unter Beschreibung der Syntax für Suchmethode und Ziel erläutert, können Sie für eine bestimmte Methode weder Sternchen noch spezifische Spalten angeben.
Obwohl durch Weglassen der ON-Klausel auch die Suchoptimierung für Gleichheits- und IN-Prädikate auf allen anwendbaren Spalten der Tabelle konfiguriert wird, gibt es Unterschiede zwischen Angeben und Weglassen der ON-Klausel. Siehe Aktivieren der Suchoptimierung für eine ganze Tabelle.
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);
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);
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);
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);
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;
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:
Zeigen Sie die Konfiguration der Suchoptimierung für die Tabelle und deren Spalten an.
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%';
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.
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.
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);
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 |
+---------------+----------+--------+------------------+--------+
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 TABLE … DROP 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 |
+---------------+-----------+-----------+-------------------+--------+
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);
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;
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;
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:
Wechseln Sie zu einer Rolle mit Berechtigungen zum Entfernen der Suchoptimierung aus der Tabelle.
Führen Sie den Befehl ALTER TABLE … DROP SEARCH OPTIMIZATION ohne ON-Klausel aus:
ALTER TABLE [IF EXISTS] <table_name> DROP SEARCH OPTIMIZATION;
Beispiel:
alter table test_table drop search optimization;
Weitere Informationen dazu finden Sie im Abschnitt zu ALTER TABLE … DROP SEARCH OPTIMIZATION.