Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Primärschlüssel und eindeutige Einschränkungen, die Eindeutigkeitsbeziehungen zwischen Feldern in Tabellen erfassen, können Benutzern und Tools helfen, Beziehungen in Ihren Daten zu verstehen. Dieser Artikel enthält Beispiele, die zeigen, wie Sie Primärschlüssel oder eindeutige Einschränkungen mit der RELY Option verwenden können, um einige gängige Arten von Abfragen zu optimieren.
Hinweis
Abfrageoptimierungen, die dem RELY Befehl zugeordnet sind, erfordern, dass Abfragen auf Photon-fähigen Compute ausgeführt werden. Siehe Was ist Photon?. Photon läuft standardmäßig auf SQL-Warehouses und serverlosem Computing für Notebooks und Workflows. Weitere Informationen zu Photon finden Sie unter Was ist Photon?.
Hinzufügen von Primärschlüsseln oder eindeutigen Einschränkungen
Sie können einen Primärschlüssel oder eine eindeutige Einschränkung in Ihrer Tabellenerstellungsanweisung hinzufügen, wie im folgenden Beispiel gezeigt, oder sie können eine zu einer Tabelle mithilfe der ADD CONSTRAINT Klausel hinzufügen.
CREATE TABLE customer (
c_customer_sk int,
PRIMARY KEY (c_customer_sk)
)
In diesem Beispiel ist c_customer_sk der Kunden-ID-Schlüssel angegeben. Die Primärschlüsseleinschränkung gibt an, dass jeder Kunden-ID-Wert in der Tabelle eindeutig sein muss. Eindeutige Constraints folgen demselben Muster und verwenden UNIQUE anstelle von PRIMARY KEY.
Azure Databricks erzwingt keine Schlüsseleinschränkungen. Sie können über Ihre vorhandene Datenpipeline oder per ETL überprüft werden. Informationen zu den Arbeitserwartungen an Streamingtabellen und materialisierten Ansichten finden Sie unter Verwalten der Datenqualität mit Pipelineerwartungen . Weitere Informationen zum Arbeiten mit Einschränkungen in Delta-Tabellen finden Sie unter Einschränkungen in Azure Databricks.
Hinweis
Es liegt in der Verantwortung des Benutzers, zu überprüfen, ob eine Einschränkung erfüllt ist. Die Verwendung einer Einschränkung, die nicht erfüllt ist, kann zu falschen Abfrageergebnissen führen.
Aktivieren von Optimierungen mit RELY
Wenn Sie wissen, dass ein Primärschlüssel oder eine eindeutige Einschränkung gültig ist, können Sie Optimierungen basierend auf der Einschränkung aktivieren, indem Sie ihn mit der RELY Option angeben. Siehe ADD CONSTRAINT Klausel für die vollständige Syntax.
Mit der RELY-Option kann Azure Databricks die Einschränkung zum Umschreiben von Abfragen nutzen. Die folgenden Optimierungen können nur ausgeführt werden, wenn die RELY-Option in einer ADD CONSTRAINT-Klausel oder ALTER TABLE-Anweisung angegeben wurde.
Mit ALTER TABLEdiesem Befehl können Sie den Primärschlüssel einer Tabelle so ändern, dass sie die RELY Option enthält, wie im folgenden Beispiel gezeigt.
ALTER TABLE
customer DROP PRIMARY KEY;
ALTER TABLE
customer
ADD
PRIMARY KEY (c_customer_sk) RELY;
Beispiele für Optimierung
In den folgenden Beispielen wird das vorherige Beispiel erweitert, in dem eine Tabelle customer erstellt wird, in der c_customer_sk ein überprüfter eindeutiger Bezeichner ist, der als PRIMARY KEY mit der RELY-Option angegeben wird. Die gleichen Optimierungen können auf eine UNIQUE Einschränkung mit der RELY Option angewendet werden.
Beispiel 1: Vermeiden unnötiger Aggregationen
Im Folgenden finden Sie eine Abfrage, die einen DISTINCT-Vorgang auf einen Primärschlüssel anwendet.
SELECT
DISTINCT c_customer_sk
FROM
customer;
Da es sich bei der Spalte c_customer_sk um eine überprüfte PRIMARY KEY-Einschränkung handelt, sind alle Werte in der Spalte eindeutig. Wenn die RELY-Option angegeben wurde, kann Azure Databricks die Abfrage optimieren, indem der DISTINCT-Vorgang nicht ausgeführt wird.
Der Optimierer kann auch DISTINCT entfernen, wenn die ausgewählte Spalte durch eine gültige UNIQUE-Einschränkung abgedeckt ist, die mit RELY angegeben wird.
Beispiel 2: Entfernen unnötiger Verknüpfungen
Das folgende Beispiel zeigt eine Abfrage, bei der Azure Databricks eine unnötige Verknüpfung beseitigen kann.
Die Abfrage verknüpft die Faktentabelle store_sales mit der Dimensionstabelle customer. Dazu wird eine linke äußere Verknüpfung ausgeführt, sodass das Abfrageergebnis alle Datensätze aus der Tabelle store_sales sowie übereinstimmende Datensätze aus der Tabelle customer enthält. Wenn in der Tabelle customer kein übereinstimmenden Datensatz enthalten ist, wird im Abfrageergebnis ein NULL-Wert für die Spalte c_customer_sk angezeigt.
SELECT
SUM(ss_quantity)
FROM
store_sales ss
LEFT JOIN customer c ON ss.customer_sk = c.c_customer_sk;
Um zu verstehen, warum diese Verknüpfung überflüssig ist, analysieren die Abfrageanweisung. Sie erfordert nur die Spalte ss_quantity aus der Tabelle store_sales. Die Tabelle customer wird über ihren Primärschlüssel oder ein Unique-Constraint verknüpft, sodass jede Zeile in store_sales mit höchstens einer Zeile in customer übereinstimmt. Da es sich bei dem Vorgang um eine äußere Verknüpfung handelt, werden alle Datensätze aus der Tabelle store_sales beibehalten, sodass die Verknüpfung keine Daten in dieser Tabelle ändert. Die SUM-Aggregation ist gleich, unabhängig davon, ob diese Tabellen verknüpft sind.
Die Verwendung des Primärschlüssels oder der UNIQUE-Einschränkung mit RELY liefert dem Abfrageoptimierer die Informationen, die er benötigt, um den Join zu eliminieren. Die optimierte Abfrage ähnelt der folgenden:
SELECT
SUM(ss_quantity)
FROM
store_sales ss
Nächste Schritte
Weitere Informationen zum Untersuchen der Beziehungen von Primärschlüsseln und Fremdschlüsseln auf der Benutzeroberfläche des Katalog-Explorers finden Sie unter Anzeigen des Entitätsbeziehungsdiagramms.