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 的用法 » 查询优化与执行 » 查询执行算法 » 算法类型 » 连接算法

 

HashAntisemijoin 算法 (JHA)

HashAntisemijoin 在左侧和右侧之间执行反半连接。右侧只用于确定左侧的哪些行将显示在结果中。使用 HashAntisemijoin 时,将读取右侧,以形成内存中的散列表,然后将按左侧的每一行探查该表。仅当没有从右侧找到任何匹配的行时,才会输出左侧的每行。当连接的输入包括来自可被重写为反连接的限定(NOT IN、ALL、NOT EXISTS)嵌套查询的表表达式时,可以使用 HashAntisemijoin。如果不存在合适的索引使得对右侧的索引检索开销足够低,则使用 HashAntisemijoin 比对引用限定查询的搜索条件进行计算的效果更好。

与 HashJoin 一样,如果没有足够的高速缓存来完成操作,HashAntisemijoin 可能会恢复为嵌套循环策略。如果是这样,性能计数器将递增。您可以使用 QueryLowMemoryStrategy 数据库属性或连接属性读取此监控器,或者在 Windows 性能监控器的 [查询:或者在 Windows 性能监控器的 [查询:内存不足策略] 计数器中读取此监控器。

HashAntisemijoin 运算符可以使用的内存量取决于服务器的进程并发水平和活动连接数。请参见SQL Anywhere 中的线程配置数据库服务器的进程并发水平

注意

Windows Mobile 上可能未提供 Windows 性能监控器。

有关详细信息,请参见连接属性中的 QueryLowMemoryStrategy。