【发布时间】:2017-08-13 05:06:54
【问题描述】:
是否有任何参数可以在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
在具有大量模式和对象的数据库上执行大约需要一个小时
【问题讨论】:
-
嗯,好的,那里的
UPPER(OWNER)表达式可能会阻止在列上使用有用的索引...我们将对其进行研究。您使用的是什么 Oracle 数据库版本,以及什么 jOOQ 版本?对于此特定查询,您可以关闭<database/>配置中的<includeRoutines/>和<includePackages/>标志:jooq.org/doc/latest/manual/code-generation/codegen-advanced/… -
Oracle 11.2.0.4,JOOQ 3.7.2。您提到的标志似乎适用于 JOOQ 3.9?
-
嗯,这些标志是在 jOOQ 3.8 中添加的,但文档目前没有反映这一点。一种解决方法是将
JavaGenerator及其generatePackages()和generateRoutines()方法重写为空。我会尽快提供有关此信息的答案 -
还有一个问题(如果您被允许发布此信息):此查询对您有什么好处(否则,PM 也会这样做)?
SELECT object_type, count(*) FROM all_objects GROUP BY object_type ORDER BY object_type;