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 的用法 » 查询处理 » 查询优化与执行 » [查询执行] 算法 » 算法类型 » 其它算法

 

InList 算法 (IN)

当可以使用索引来满足 IN 列表谓语时,将使用 InList。例如,在以下查询中,优化程序发现它可以使用 Employees 表的主键索引来对该表进行访问。

SELECT *
FROM Employees
WHERE EmployeeID IN ( 102, 105, 129 );

为了完成这一任务,使用特殊的 IN 列表表在左侧建立了一个连接。行读取自 IN 列表表,并用于探查 Employees 表。

要使用 InList,IN 列表谓语中的每个元素必须是常量,或者是可在优化时经计算得到常量值的某个值(如 CURRENT DATE、CURRENT TIMESTAMP 以及非确定性系统函数和用户定义的函数),或者是在查询块的一次执行中为常量的某个值(外部引用)。例如,下面的查询满足 InList 的条件。

SELECT *, ( 
   SELECT FIRST GivenName 
    FROM Employees e 
    WHERE e.DepartmentID IN ( 500, d.DepartmentID ) 
    ORDER BY e.DepartmentID )
FROM Departments d;

多个 IN 列表谓语可以使用同一索引来得到满足。