Beschleunigung von Verknüpfungsabfragen mit Suchoptimierung¶
Der Suchoptimierungsdienst kann die Leistung von Abfragen verbessern, die eine geringe Anzahl von unterschiedlichen Werten auf der Build-Seite der Verknüpfung haben.
Der Suchoptimierungsdienst kann zum Beispiel die Leistung dieser Arten von Verknüpfungen verbessern:
Angenommen,
products
ist eine Tabelle, die für jedes Produkt eine Zeile enthält, undsales
ist eine Tabelle, die für jeden Verkauf eines Produkts eine Zeile enthält. Die Tabelleproducts
enthält weniger Zeilen und ist kleiner als die Tabellesales
. Um alle Verkäufe eines bestimmten Produkts zu ermitteln, verknüpfen Sie die Tabellesales
(die größere Tabelle) mit der Tabelleproducts
(die kleinere Tabelle). Da die Tabelleproducts
klein ist, gibt es nur wenige eindeutige Werte auf der Build-Seite der Verknüpfung.Bemerkung
Im Data Warehousing wird die große Tabelle häufig als Faktentabelle bezeichnet. Die kleine Tabelle wird als Dimensionstabelle bezeichnet. Im weiteren Verlauf dieses Themas werden diese Begriffe verwendet, wenn wir uns auf die große Tabelle und die kleine Tabelle in einer Verknüpfung beziehen.
Nehmen wir an,
customers
ist eine Tabelle, die eine Zeile für jeden Kunden enthält, undsales
ist eine Tabelle, die eine Zeile für jeden Verkauf enthält. Beide Tabellen sind groß. Um alle Verkäufe für einen bestimmten Kunden zu finden, verknüpfen Sie die Tabellesales
(die Probe-Seite) mit der Tabellecustomers
(die Build-Seite) und verwenden einen Filter, sodass auf der Build-Seite der Verknüpfung eine kleine Anzahl eindeutiger Werte vorhanden ist.
Unter diesem Thema:
Aktivieren des Suchoptimierungsdienstes zur Verbesserung der Leistung von Verknüpfungen¶
Damit der Suchoptimierungsdienst die Leistung von Verknüpfungen verbessern kann, fügen Sie der Tabelle auf der Probe-Seite der Verknüpfungen die Suchoptimierung hinzu. Bei dieser Tabelle handelt es sich in der Regel um eine große Tabelle, die in Verknüpfungensabfragen nicht gefiltert wird, wie z. B. eine Faktentabelle.
Um die Vorteile der Suchoptimierung zu nutzen, stellen Sie sicher, dass die Build-Seite der Verknüpfung eine geringe Anzahl eindeutiger Werte aufweist, entweder weil es sich um eine kleine Dimensionstabelle handelt oder weil ein selektiver Filter verwendet wurde. Die Kosten für die Suchoptimierung einer Abfrage stehen im Verhältnis zur Anzahl der unterschiedlichen Werte, die auf der Build-Seite der Verknüpfung nachgeschlagen werden müssen. Wenn diese Zahl zu groß ist, entscheidet sich Snowflake möglicherweise gegen die Verwendung des Suchzugriffspfads und verwendet stattdessen den regulären Tabellenzugriffspfad.
Unterstützte Verknüpfungsprädikate¶
Der Suchoptimierungsdienst kann die Leistung von Abfragen mit den folgenden Typen von Verknüpfungsprädikaten verbessern:
Gleichheitsprädikate der Form
probe_side_table.column = build_side_table.column
.Transformationen des Operanden auf der Build-Seite des Prädikats (z. B. Zeichenfolgenverkettung, Addition usw.).
Konjunktionen (
AND
) von mehreren Gleichheitsprädikaten.
Beispiele für unterstützte Abfragen¶
In diesem Abschnitt finden Sie Beispiele für Verknüpfungsabfragen, die von einer Suchoptimierung profitieren können.
Beispiel: Einfaches Gleichheitsprädikat¶
Es folgt ein Beispiel für eine unterstützte Abfrage, die ein einfaches Gleichheitsprädikat als Verknüpfungsprädikat verwendet. Diese Abfrage verknüpft eine Tabelle namens sales
mit einer Tabelle namens customers
. Die Tabelle auf der Probe-Seite sales
ist groß und hat eine Suchoptimierung aktiviert. Die Tabelle customers
auf der Build-Seite ist ebenfalls groß, aber die Eingabe aus dieser Tabelle ist aufgrund des selektiven Filters für die Spalte customer_id
klein.
SELECT sales.date, customer.name
FROM sales JOIN customers ON (sales.customer_id = customers.customer_id)
WHERE customers.customer_id = 2094;
Beispiel: Prädikat transformiert auf den dimensionsseitigen Operanden¶
Die folgende Abfrage verknüpft eine Faktentabelle namens sales
mit einer Dimensionstabelle namens products
. Für die sehr große Faktentabelle ist die Suchoptimierung aktiviert. Die Dimensionstabelle ist klein.
Diese Abfrage transformiert den dimensionsseitigen Operanden des Prädikats (z. B. durch Multiplikation der Werte in der Verknüpfungsbedingung) und kann von der Suchoptimierung profitieren:
SELECT sales.date, product.name
FROM sales JOIN products ON (sales.product_id = product.old_id * 100)
WHERE product.category = 'Cutlery';
Beispiel: Prädikat, das sich über mehrere Spalten erstreckt¶
Abfragen, in denen sich ein Verknüpfungsprädikat über mehrere Spalten erstreckt, können von einer Suchoptimierung profitieren:
SELECT sales.date, product.name
FROM sales JOIN products ON (sales.product_id = product.id and sales.location = product.place_of_production)
WHERE product.category = 'Cutlery';
Beispiel: Abfrage mit Point-Lookup-Filtern und Verknüpfungsprädikaten¶
Bei einer Abfrage, die sowohl reguläre Point-Lookup-Filter als auch Verknüpfungsprädikate verwendet, kann der Suchoptimierungsdienst die Leistung von beiden verbessern. In der folgenden Abfrage kann der Suchoptimierungsdienst sowohl das sales.location
Point-Lookup-Prädikat als auch das product_id
Verknüpfungsprädikat verbessern:
SELECT sales.date, product.name
FROM sales JOIN products ON (sales.product_id = product.id)
WHERE product.category = 'Cutlery'
AND sales.location = 'Buenos Aires';
Einschränkungen¶
Die folgenden Einschränkungen gelten für den Suchoptimierungsdienst und für Verknüpfungsabfragen:
Disjunktionen (
OR
) in Verknüpfungsprädikaten werden derzeit nicht unterstützt.LIKE, ILIKE, und RLIKE werden derzeit nicht unterstützt.
Verknüpfungsprädikate auf VARIANT-Spalten werden derzeit nicht unterstützt.
EQUAL_NULL Gleichheitsprädikate werden derzeit nicht unterstützt.
Die aktuellen Einschränkungen des Suchoptimierungsdienstes gelten auch für Verknüpfungsabfragen.