Beschleunigen von Abfragen mit Teilzeichenfolgen und regulären Ausdrücken mit der Suchoptimierung¶
Die Suchoptimierung kann die Leistung von Abfragen mit Prädikaten verbessern, die in Textdaten oder semistrukturierten Daten nach Teilzeichenfolgen suchen oder reguläre Ausdrücke verwenden. Weitere Informationen zur Funktionsweise der Suche nach Teilzeichenfolgen in semistrukturierten Daten finden Sie unter Beschleunigen von Abfragen auf semistrukturierten Daten durch die Suchoptimierung.
In den folgenden Abschnitten finden Sie weitere Informationen zur Unterstützung der Suchoptimierung für Abfragen mit Teilzeichenfolgen und regulären Ausdrücken:
Aktivieren der Suchoptimierung für Abfragen mit Teilzeichenfolgen und regulären Ausdrücken¶
Um die Leistung von Abfragen mit Teilzeichenketten und regulären Ausdrücken in einer Tabelle zu verbessern, verwenden Sie die Klausel ON SUBSTRING im Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION für bestimmte Spalten.
Beispiel:
ALTER TABLE mytable ADD SEARCH OPTIMIZATION ON SUBSTRING(mycol);
Weitere Informationen dazu finden Sie unter Aktivieren und Deaktivieren der Suchoptimierung.
Unterstützte Prädikate¶
Der Suchoptimierungsdienst kann die Leistung von Abfragen mit Prädikaten verbessern, die Folgendes verwenden:
Der Suchoptimierungsdienst kann die Leistung bei der Suche nach Teilzeichenfolgen, die fünf oder mehr Zeichen lang sind, verbessern. (Selektivere Teilzeichenfolgen können zu einer besseren Leistung führen.) Der Suchoptimierungsdienst verwendet keine Suchzugriffspfade für das folgende Prädikat, da die Teilzeichenfolge kürzer als fünf Zeichen ist:
LIKE '%TEST%'
Für das folgende Prädikat kann der Suchoptimierungsdienst die Abfrage optimieren, indem für die Suche nach den Teilzeichenfolgen für SEARCH
und OPTIMIZED
Suchzugriffspfade verwendet werden. Die Suchzugriffspfade werden jedoch nicht für IS
verwendet, weil die Teilzeichenfolge kürzer als fünf Zeichen ist.
LIKE '%SEARCH%IS%OPTIMIZED%'
Bei Abfragen, die RLIKE, REGEXP und REGEXP_LIKE verwenden, gilt Folgendes:
Das Argument
subject
muss eine TEXT-Spalte in einer Tabelle sein, bei der die Suchoptimierung aktiviert ist.Das Argument
pattern
muss eine Zeichenfolgenkonstante sein.
Bei regulären Ausdrücken funktioniert der Suchoptimierungsdienst in folgenden Fällen am besten:
Das Muster enthält mindestens ein Teilzeichenfolgenliteral, das fünf oder mehr Zeichen lang ist.
Das Muster gibt an, dass die Teilzeichenfolge mindestens einmal vorkommen muss.
Das folgende Muster legt zum Beispiel fest, dass string
ein oder mehrere Male im „subject“ vorkommen soll:
RLIKE '(string)+'
Der Suchoptimierungsdienst kann die Leistung von Abfragen mit den folgenden Mustern verbessern, da jedes Prädikat angibt, dass eine Teilzeichenkette aus fünf oder mehr Zeichen mindestens einmal vorkommen muss. (Beachten Sie, dass im ersten Beispiel eine Zeichenfolgenkonstanten in Dollarzeichen verwendet wird, damit die Backslash-Zeichen nicht mit Escapezeichen umschlossen werden müssen.)
RLIKE $$.*email=[\w\.]+@snowflake\.com.*$$
RLIKE '.*country=(Germany|France|Spain).*'
RLIKE '.*phone=[0-9]{3}-?[0-9]{3}-?[0-9]{4}.*'
Im Gegensatz dazu verwendet die Suchoptimierung keine Suchzugriffspfade bei Abfragen mit den folgenden Mustern:
Muster ohne Teilzeichenfolgen:
RLIKE '.*[0-9]{3}-?[0-9]{3}-?[0-9]{4}.*'
Muster, die nur Teilzeichenfolgen mit weniger als fünf Zeichen enthalten:
RLIKE '.*tel=[0-9]{3}-?[0-9]{3}-?[0-9]{4}.*'
Muster, die den Alternationsoperator verwenden, wobei eine Option eine Teilzeichenfolge mit weniger als fünf Zeichen ist:
RLIKE '.*(option1|option2|opt3).*'
Muster, bei denen die Teilzeichenfolge optional ist:
RLIKE '.*[a-zA-z]+(string)?[0-9]+.*'
Selbst wenn die Teilzeichenfolgenliterale kürzer als fünf Zeichen sind, kann der Suchoptimierungsdienst die Abfrageleistung verbessern, wenn die Erweiterung des regulären Ausdrucks eine Teilzeichenfolgenliteral erzeugt, die fünf Zeichen oder länger ist.
Betrachten Sie beispielsweise folgendes Muster:
.*st=(CA|AZ|NV).*(-->){2,4}.*
In diesem Beispiel:
Obwohl die Teilzeichenfolge-Literale (z. B.
st=
,CA
usw.) kürzer als fünf Zeichen sind, erkennt der Suchoptimierungsdienst, dass die Teilzeichenfolgest=CA
,st=AZ
oderst=NV
(die jeweils fünf Zeichen lang sind) im Text vorkommen müssen.Auch wenn die Teilzeichenkette
-->
kürzer als fünf Zeichen ist, bestimmt der Suchoptimierungsdienst, dass die Teilzeichenkette-->-->
(die länger als fünf Zeichen ist) im Text vorkommen muss.
Der Suchoptimierungsdienst kann Suchzugriffspfade verwenden, um diese Teilzeichenfolgen abzugleichen, was die Leistung der Abfrage verbessern kann.