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

 

子查询和函数高速缓存

SQL Anywhere 在处理子查询时会高速缓存结果。这种高速缓存是一个请求一个请求地执行的;并发请求或多个连接决不会共享已高速缓存的结果。如果 SQL Anywhere 需要为同一组相关值重新计算子查询,它就可以直接从高速缓存中检索结果。如此一来,SQL Anywhere 就可以避免许多重复和多余的计算。当请求完成(查询的游标关闭)时,SQL Anywhere 就会释放被高速缓存的值。

在进行查询处理时,SQL Anywhere 会监视被高速缓存的子查询值的重用频率。如果相关变量的值极少重复,SQL Anywhere 就只需要计算一次大多数的值。在这种情况下,SQL Anywhere 会发现重新计算偶尔出现的重复值比高速缓存大量只出现一次的条目更为有效。因此,对于语句的其余部分,数据库服务器会暂停对该子查询进行高速缓存,而为外部查询块中的每个行重新计算该子查询。

如果相关列的大小大于 255 字节,SQL Anywhere 也不会进行高速缓存。在这种情况下,您可能需要重写查询或者将另一列添加到表中,以提高这些操作的效率。

 函数高速缓存