数组是否在 jOOQ 和 PostgreSQL 中进行了优化?

巴斯歌剧

我有一大串标识符,我想将其添加到WHERE子句中,如下所示:

identifier IN (..., ..., ..., ...)

然而,这很慢,因为它必须单独绑定每个值。请记住,列表很长(几乎 1000 个值)。在这种情况下,最好使用:

identifier = ANY({..., ..., ..., ...})

现在,我们只绑定数组一次。

我尝试在 jOOQ 中这样做:

Integer[] values = {..., ..., ..., ...}
DSL.any(DSL.array(values))

生成以下 SQL:

"identifier" = any (array[?, ?, ?, ...])
TRACE | 2017-08-24 10:02:08,914 | JooqLogger.java | 187 | Binding variable 1       : ...
TRACE | 2017-08-24 10:02:08,947 | JooqLogger.java | 187 | Binding variable 2       : ...
TRACE | 2017-08-24 10:02:08,958 | JooqLogger.java | 187 | Binding variable 3       : ...
...

所以,这让我得出结论,我们仍然分别绑定每个值?有没有办法优化这个?

卢卡斯·埃德

代替:

DSL.any(DSL.array(values));

和:

DSL.any(values);

创建单个绑定变量。

或者,您可以显式创建该绑定变量:

Field<Integer[]> array = DSL.val(values);
DSL.any(array);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否对if(0)和if(1)语句进行了优化?

jOOQ是否支持PostgreSQL数组函数和运算符?

苹果是否已删除“针对iPhone 6和iPhone 6 Plus进行了优化”?

C ++中的文件范围变量在gcc和clang中进行了不同的优化

是否对克隆语句进行了优化?

IEnumerable <T>,Task <T>和IDisposable是否在C#编译器中进行了硬编码?

Ubuntu是否针对多核CPU进行了优化?

OpenCV是否在调试模式下进行了优化?

如何确定Swift是否使用优化进行了编译

是否对JavaScript引擎尾部调用(TCO)进行了优化?

JOOQ的insert ...返回PostgreSQL 10和JOOQ 3.10吗?

DSL选择中的JOOQ和PostgreSQL类型

微观优化,是否已通过现代浏览器进行了优化?

JOOQ PostgreSQL访问数组的单个元素

我怎么知道,UITextField和UITextView中是否进行了任何更改/修改?

CSS:即使在CSS中进行了设置,图像的宽度和高度也不相同

Rust编译器使用“ loop”和“ while true”进行了哪些优化?

客户端检查是否在Firebase中进行了身份验证

如何修改并检查是否在Java 8中进行了修改?

如何知道服务人员是否在gatsby-plugin-offline中进行了更新

函数可以知道它们是否已经在Python(joblib)中进行了多进程处理

检查用户登录的页面是否在Angular 2中进行了更改

检查用户是否仍在angularfire2中进行了身份验证

vscode是否在git commit消息框中进行了拼写检查?

FireDac SQLite是否在Delphi 10.4中进行了更改?

依赖顺序是否在应用程序中进行了任何更改?

扫描是否在记忆游戏中进行了所有匹配

检查玩家是否已经在 RPS 中进行了移动

如何检查我的应用程序是否已针对Android进行了电池优化配置?