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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » クエリ処理 » クエリの最適化と実行 » セマンティック・クエリ変形

 

不要な DISTINCT 条件の排除

DISTINCT 条件が不要な場合があります。たとえば、結果内の 1 つまたは複数のカラムがプライマリ・キーであるため、そのプロパティに UNIQUE 条件が明示的または暗黙的に含まれているような場合です。

次のコマンドでは、Products テーブルにプライマリ・キー p.ID があって結果セットの一部になっているので、DISTINCT キーワードは不要です。

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

Products<seq>

データベース・サーバは、セマンティック上等しいクエリを実行します。

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

同様に、以下のクエリの結果には両方のテーブルのプライマリ・キーが含まれているため、結果内の各ローは異なります。そのためデータベース・サーバは、結果セットで DISTINCT を実行せずに、このクエリを実行します。

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

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