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.
Diese Fähigkeit umfasst Prädikate, die Folgendes verwenden:
Bemerkung
Sie müssen dieses Feature für bestimmte Spalten mit der ON-Klausel im Befehl ALTER TABLE … ADD SEARCH OPTIMIZATION aktivieren. (Wenn Sie die Suchoptimierung auf Tabellenebene aktivieren, wird die Suche nach Teilzeichenfolgen nicht optimiert.) Beispiel:
ALTER TABLE mytable ADD SEARCH OPTIMIZATION ON SUBSTRING(mycol);
Suchläufe nach Teilzeichenfolgen werden nur optimiert, wenn Sie die ON-Klausel verwenden.
Der Suchoptimierungsdienst kann die Leistung bei der Suche nach Teilzeichenfolgen verbessern, die 5 oder mehr Zeichen lang sind. (Selektivere Teilzeichenfolgen können zu einer besseren Leistung führen.) Der Suchoptimierungsdienst verwendet für das folgende Prädikat keine Suchzugriffspfade, da die Teilzeichenfolge kürzer als 5 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, da die Teilzeichenfolge kürzer als 5 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 Teilzeichenfolgen-Literal, das 5 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 Teilzeichenfolge aus 5 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 enthalten, die weniger als 5 Zeichen enthalten:
RLIKE '.*tel=[0-9]{3}-?[0-9]{3}-?[0-9]{4}.*'
Muster, die den Optionsoperator verwenden, wobei eine Option eine Teilzeichenfolge ist, die weniger als 5 Zeichen enthält:
RLIKE '.*(option1|option2|opt3).*'
Muster, bei denen die Teilzeichenfolge optional ist:
RLIKE '.*[a-zA-z]+(string)?[0-9]+.*'
Auch wenn die Teilzeichenfolgen-Literale weniger als 5 Zeichen enthalten, kann der Suchoptimierungsdienst die Abfrageleistung verbessern, wenn die Erweiterung des regulären Ausdrucks ein Teilzeichenfolgen-Literal ergibt, das 5 Zeichen oder mehr enthält.
Betrachten Sie beispielsweise folgendes Muster:
.*st=(CA|AZ|NV).*(-->){2,4}.*
In diesem Beispiel:
Obwohl die Teilzeichenfolgen-Literale (z. B.
st=
,CA
usw.) kürzer als 5 Zeichen sind, erkennt der Suchoptimierungsdienst, dass die Teilzeichenfolgenst=CA
,st=AZ
oderst=NV
(die jeweils 5 Zeichen lang sind) im Text vorkommen müssen.Auch wenn das Teilzeichenfolgen-Literal
-->
kürzer als 5 Zeichen ist, stellt der Suchoptimierungsdienst fest, dass die Teilzeichenfolge-->-->
(die länger als 5 Zeichen ist) im Text auftreten muss.
Der Suchoptimierungsdienst kann Suchzugriffspfade verwenden, um diese Teilzeichenfolgen abzugleichen, was die Leistung der Abfrage verbessern kann.