gpt4 book ai didi

java - JOOQ 慢速代码生成

转载 作者:行者123 更新时间:2023-11-30 10:31:56 25 4
gpt4 key购买 nike

是否有任何参数可以在 jooq 代码生成期间打开/关闭下一个查询的执行?

SELECT "SYS"."ALL_OBJECTS"."OWNER",
"SYS"."ALL_OBJECTS"."OBJECT_NAME",
"SYS"."ALL_OBJECTS"."OBJECT_ID",
"SYS"."ALL_PROCEDURES"."AGGREGATE"
FROM "SYS"."ALL_OBJECTS"
LEFT OUTER JOIN "SYS"."ALL_PROCEDURES"
ON ( "SYS"."ALL_OBJECTS"."OWNER" =
"SYS"."ALL_PROCEDURES"."OWNER"
AND "SYS"."ALL_OBJECTS"."OBJECT_NAME" =
"SYS"."ALL_PROCEDURES"."OBJECT_NAME")
WHERE ( UPPER ("SYS"."ALL_OBJECTS"."OWNER") IN ( 'MYSCHEMA')
AND "SYS"."ALL_OBJECTS"."OBJECT_TYPE" IN ( 'FUNCTION', 'PROCEDURE'))
ORDER BY "SYS"."ALL_OBJECTS"."OWNER" ASC,
"SYS"."ALL_OBJECTS"."OBJECT_NAME" ASC,
"SYS"."ALL_OBJECTS"."OBJECT_ID" ASC

在具有大量模式和对象的数据库上执行大约需要一个小时

最佳答案

jOOQ 运行的查询的一个主要问题是 UPPER(OWNER) 表达式。这是在 jOOQ 2.4 ( #1418 ) 中引入的,以防止用户意外使用小写模式名称的错误配置。该功能基于一个错误的假设,即区分大小写的用户是不可能的。它们当然是可能的(即使很少见),所以#1418 是错误的。我为这个问题创建了两个问题:

  • #5989 : 通过避免 OWNER
  • 上的函数来解决性能问题
  • #5990 : 重新制定区分大小写的模式名称

与此同时,您有一些可能的解决方法:

jOOQ 3.8 之前

你总是可以从 jooq-codegen 覆盖 JavaGenerator 并重新实现一些方法,包括 generatePackages()generateRoutines() 是空的。这样,相关代码就完全不会执行了。

当然,这意味着您不会获得任何生成的包和例程。

发布 jOOQ 3.8

有一个新的配置选项,您可以在其中配置地执行与上述相同的操作:

<configuration>
<generator>
<database>
<includeRoutines>false</includeRoutines>
<includePackages>false</includePackages>
...

另见: https://www.jooq.org/doc/latest/manual/code-generation/codegen-advanced/codegen-config-include-object-types

关于java - JOOQ 慢速代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42928707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com