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

 

交叉算法(IH、IM、IAH、IAM)

SQL Anywhere 查询优化程序可以从集合交叉 SQL 运算符 INTERSECT 的以下两个物理实现中进行选取:基于排序的变体 MergeIntersect (IM) 和基于散列的变体 HashIntersect (IH)。

MergeIntersect 使用 MergeJoin 通过按排序顺序分析行匹配来计算两个输入之间的集合交叉。通常,要求对两个输入进行显式排序。同样,HashIntersect 使用 HashJoin 来计算两个输入之间的集合和包交集(INTERSECT 和 INTERSECT ALL)。

如有必要,当检测到内存不足时,HashIntersect 可以动态地切换到嵌套循环策略。如果发生这种情况,性能计数器将递增。可以使用 QueryLowMemoryStrategy 数据库属性或连接属性读取此监控器,也可以在图形式计划中的 QueryLowMemoryStrategy 统计信息中(如果运行时有统计信息)或者在 Windows 性能监控器的 [查询:内存不足策略] 计数器中读取此监控器。

当内存不足时,将在 Windows Mobile 上禁用 HashIntersect。

对于 INTERSECT,MergeIntersect 或 HashIntersect 与 DISTINCT 算法之一结合使用,以确保结果中不包含重复项。对于 INTERSECT ALL 运算符,MergeIntersectAll 和 HashIntersectAll 与 RowReplicate 结合使用,RowReplicate 用于计算结果中包含的重复行的正确数目。

另请参见