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 条件是不必要的。例如,结果中的一个或多个列的属性可能(显式或隐式地)包含了 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> ]