Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询优化与执行 » 查询执行算法 » 算法类型 » 查询表达式算法

 

排除算法(EAH、EAM、EH、EM)

SQL Anywhere 查询优化程序可以从集合差异 SQL 运算符 EXCEPT 的以下两个物理实现中进行选取:基于排序的变体 MergeExcept (EM) 和基于散列的变体 HashExcept (EH)。

MergeExcept 使用 MergeJoin 通过按排序顺序分析匹配行来计算两个输入之间的集合差异。通常,要求对两个输入进行显式排序。同样,HashExcept 使用 HashAntisemijoin 来计算两个输入之间的集合差异,使用左外散列连接来计算两个输入之间的差异 (EXCEPT ALL)。

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

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

将 EXCEPT,MergeExcept 和 HashExcept 与 DISTINCT 算法中的一个结合使用,可确保结果中不包含重复项。对于 EXCEPT ALL,HashExceptAll 和 MergeExceptAll 与 RowReplicate 结合使用,RowReplicate 用于计算结果中包含的重复行的正确数目。

 另请参见