是否在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 array = DSL.val(values); DSL.any(array);