Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfrageverarbeitung » Abfragen optimieren und ausführen » Semantische Abfragentransformation

 

Unnötige DISTINCT-Bedingungen eliminieren

Manchmal ist eine DISTINCT-Bedingung nicht notwendig. Die Eigenschaften in einer oder mehreren Spalten in Ihrem Ergebnis können eine UNIQUE-Bedingung enthalten, entweder explizit oder auch implizit, weil es sich um einen Primärschlüssel handelt.

Beispiele

Das DISTINCT-Schlüsselwort im folgenden Befehl ist unnötig, da die Products-Tabelle den Primärschlüssel p.ID enthält, der Teil der Ergebnismenge ist.

SELECT DISTINCT p.ID, p.Quantity
FROM Products p;

Products<seq>

Der Datenbankserver führt folgende semantisch äquivalente Abfrage aus:

SELECT p.ID, p.Quantity
FROM Products p;

Auf ähnliche Weise enthält das Ergebnis der folgenden Abfrage die Primärschlüssel beider Tabellen, daher muss jede Zeile im Ergebnis verschieden sein. Daher führt der Datenbankserver diese Abfrage aus, ohne DISTINCT auf die Ergebnismenge anzuwenden.

SELECT DISTINCT *
FROM SalesOrders o JOIN Customers c
   ON o.CustomerID = c.ID
WHERE c.State = 'NY';

Work[ HF[ c<seq> ] *JH o<seq> ]