Beschleunigung von Abfragen mit skalaren Funktionen durch Suchoptimierung

Eine skalare Funktion gibt bei jedem Aufruf einen einzigen Wert zurück. Der Suchoptimierungsdienst kann die Leistung von Abfragen verbessern, die skalare Funktionen in Gleichheitsprädikaten verwenden. Die skalare Funktion kann eine systemdefinierte skalare Funktion oder eine benutzerdefinierte skalare SQL-Funktion sein.

Die maximale Anzahl von Verbindungen, die vom Pool zugewiesen werden können (an Clients ausgecheckt oder im Leerlauf auf Auschecken wartend).

Aktivieren der Suchoptimierung für Abfragen, die skalare Funktionen verwenden

Abfragen werden nicht verbessert, es sei denn, Sie aktivieren die Suchoptimierung für die Spalten, die in Gleichheitsprädikaten angegeben sind, die die Skalarfunktionen aufrufen: Um die Leistung von Abfragen mit skalaren Funktionen auf eine Tabelle zu verbessern, verwenden Sie den Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION:

  • Aktivieren Sie die Suchoptimierung für bestimmte Spalten.

  • Aktivieren Sie die Suchoptimierung für alle Spalten der Tabelle.

Im Allgemeinen ist es eine bewährte Praxis, die Suchoptimierung nur für bestimmte Spalten zu aktivieren. Verwenden Sie die ON EQUALITY-Klausel, um die Spalten anzugeben. Dieses Beispiel ermöglicht die Suchoptimierung für eine bestimmte Spalte:

ALTER TABLE mytable ADD SEARCH OPTIMIZATION ON EQUALITY(mycol);
Copy

So geben Sie EQUALITY für alle Spalten der unterstützten Datentypen an (außer für halbstrukturierte und GEOGRAPHY):

ALTER TABLE mytable ADD SEARCH OPTIMIZATION;
Copy

Weitere Informationen dazu finden Sie unter Aktivieren und Deaktivieren der Suchoptimierung.

Unterstützte Datentypen

Der Suchoptimierungsdienst kann die Leistung von Abfragen verbessern, die Spalten der folgenden Datentypen in Gleichheitsprädikaten verwenden, die Skalarfunktionen aufrufen:

Abfragen, die andere Arten von Werten beinhalten (z. B. VARIANT, FLOAT, GEOGRAPHY oder GEOMETRY), profitieren nicht davon.

Beispiele für unterstützte Abfragen mit skalaren Funktionen

Die folgenden Abfragen verwenden skalare Funktionen und werden vom Suchoptimierungsdienst unterstützt.

Verwenden Sie eine vom System definierte skalare Funktion im Prädikat einer Abfrage

Diese Abfrage verwendet die systemdefinierte skalare Funktion SHA2 in einem Gleichheitsprädikat. Um die Leistung zu verbessern, stellen Sie sicher, dass die Suchmethode EQUALITY für die Spalte mycol in der Tabelle test_so_scalar_function_system aktiviert ist.

SELECT *
  FROM test_so_scalar_function_system
  WHERE mycol = SHA2('Snowflake');
Copy

Verwenden Sie eine benutzerdefinierte skalare SQL -unktion im Prädikat einer Abfrage

Erstellen Sie eine benutzerdefinierte skalare Funktion:

CREATE OR REPLACE FUNCTION test_scalar_udf(x INTEGER)
RETURNS INTEGER
AS
$$
  SELECT x + POW(2, 3)::INTEGER + 2
$$
;
Copy

Diese Abfrage verwendet die Funktion test_scalar_udf in einem Gleichheitsprädikat. Um die Leistung zu verbessern, stellen Sie sicher, dass die Suchmethode EQUALITY für die Spalte mycol in der Tabelle test_so_scalar_function_udf aktiviert ist.

SELECT *
  FROM test_so_scalar_function_udf
  WHERE mycol = test_scalar_udf(15750);
Copy