有时,您可以使用 WHERE 子句或 HAVING 子句指定同一组行。在这种情况下,其中一种方法并不比另一种方法更有效。优化程序始终会自动分析您输入的每条语句,并选择执行该语句的有效方法。最好使用能够最清晰地描述所需结果的语法。通常,这意味着在前面的子句中消除不需要的行。
要列出其订单数超过 55 且 ID 大于 1000 的所有销售代表,请输入以下语句。
SELECT SalesRepresentative, COUNT( * ) FROM SalesOrders WHERE SalesRepresentative > 1000 GROUP BY SalesRepresentative HAVING count( * ) > 55 ORDER BY SalesRepresentative; |
以下语句会产生相同的结果。
SELECT SalesRepresentative, COUNT( * ) FROM SalesOrders GROUP BY SalesRepresentative HAVING count( * ) > 55 AND SalesRepresentative > 1000 ORDER BY SalesRepresentative; |
SQL Anywhere 会检测到这两条语句都描述了相同的结果集,从而高效地执行各条语句。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |