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 的用法 » 查询处理 » 查询优化与执行 » 读取执行计划 » 读取文本计划

 

简要文本计划

当您要快速比较计划时,简要文本计划将非常有用。在所有访问计划格式中,它所提供的信息量是最少的,但它在一行上提供这些信息。

在下面的示例中,由于 ORDER BY 子句使整个结果集进行排序,因此计划以 Work[Sort 开头。对 Customers 表的访问是通过它的主键索引 CustomersKey 进行的。因为列 Customers.ID 是主键,所以将使用索引扫描来满足搜索条件。缩写 JNL 指示优化程序选择合并连接来处理 Customers 和 SalesOrders 之间的连接。最后,使用外键索引 FK_CustomerID_ID 对 SalesOrders 表进行访问,以在 Customers 表中查找 CustomerID 小于 100 的行。

SELECT EXPLANATION ('SELECT GivenName, Surname, OrderDate
FROM Customers JOIN SalesOrders
WHERE CustomerID < 100
ORDER BY OrderDate');

Work[ Sort[ Customers<CustomersKey> JNL SalesOrders<FK_CustomerID_ID> ] ]

有关计划中使用的代码字的详细信息,请参见执行计划缩写

用冒号来分隔连接策略

下面的命令包含两个查询块:引用 SalesOrders 和 SalesOrderItems 表的外部选择块和从 Products 表选择的子查询块。

SELECT EXPLANATION ('SELECT *
FROM SalesOrders AS o
   KEY JOIN SalesOrderItems AS I
WHERE EXISTS
   (  SELECT *
      FROM Products p
      WHERE p.ID = 300 )');

o<seq> JNL i<FK_ID_ID> : p<ProductsKey>

用冒号将不同查询块的连接策略分开。简要计划始终会首先列出主块的连接策略,然后才列出其它查询块的连接策略。其它查询块的连接策略的顺序可能与语句中查询块的顺序或者查询块的执行顺序不对应。

有关计划中使用的缩写的详细信息,请参见执行计划缩写