准备好的语句和语句高速缓存

准备好的语句本来是对单个会话进行高速缓存。也就是说,如果执行准备好的语句多次(或如果打开单个游标多次),则那个会话反复地使用相同的准备好的查询计划。

如果会话准备语句,然后执行它多次,则使用 SQL 语句高速缓存基本上不会对它的性能产生影响,因为在 PREPARE 语句期间,该语句只优化一次。

然而,如果其他会话也准备那个相同的语句,或如果第一个会话准备该语句几次,则语句高速缓存通常会带来直接的性能收益,因为数据库服务器仅计算该查询计划一次。当然,原始的会话可能从语句高速缓存获得小的收益,即便它仅准备该语句一次,因为其他会话使用较少的内存,且数据库服务器为其他会话执行较少的操作。