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, und sales ist eine Tabelle, die für jeden Verkauf eines Produkts eine Zeile enthält. Die Tabelle products enthält weniger Zeilen und ist kleiner als die Tabelle sales. Um alle Verkäufe eines bestimmten Produkts zu ermitteln, verknüpfen Sie die Tabelle sales (die größere Tabelle) mit der Tabelle products (die kleinere Tabelle). Da die Tabelle products 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, und sales 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 Tabelle sales (die Probe-Seite) mit der Tabelle customers (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;
Copy

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';
Copy

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';
Copy

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';
Copy

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.