可用版本:Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

存储过程的标量子查询

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

此设置主要对 Oracle 数据库有用,Oracle 数据库实现了一个名为 标量子查询缓存 的功能,这是一个很好的工具,可以避免谓词使用存储函数调用时昂贵的 PL/SQL 到 SQL 上下文切换。

启用此设置后,嵌入在 SQL 语句中的所有存储函数调用都将包装在标量子查询中

SELECT
  (SELECT my_package.format(LANGUAGE_ID) FROM dual)
FROM BOOK
DSL.using(configuration)
   .select(MyPackage.format(BOOK.LANGUAGE_ID))
   .from(BOOK)

如果我们的表包含数千本书,但只有十几个 LANGUAGE_ID 值,那么使用标量子查询缓存,我们可以避免大部分函数调用并缓存每个 LANGUAGE_ID 的结果。

示例配置

Settings settings = new Settings()
    .withRenderScalarSubqueriesForStoredFunctions(true);

反馈

您对此页面有任何反馈吗? 我们很乐意听到您的意见!

The jOOQ Logo