在我们的 Documentum 应用程序中检索对象时,需要很长时间。我们在数据源 och 中激活了长时间运行的查询选项,但发现以下查询花费了太多时间:
select all
b.r_object_id, dm_repeating1_0.state_name, a.object_name
from
dm_policy_sp a,
dm_sysobject_sp b,
dm_policy_rp dm_repeating1_0
where
(
(a.r_object_id=b.r_policy_id)
and (dm_repeating1_0.i_state_no=b.r_current_state)
and b.r_object_id in (N'a long, long list of IDs')
or a.r_object_id in (N'a long, long list of IDs')
)
and /* ... */
如您所见,表“a”是一个策略表,它只有 7 条记录。在两个“或”运算符之后的 SQL 语句中,我们正在查找object_id
表“a”中的 100 个对象!我们执行查询并搜索表“b”(systemObjects
)中的那些对象,我们发现这些对象属于表 b!
上述查询大约需要 17 分钟。当我们将表中“or”运算符后面的表名改为b时,只用了10秒!
我们假设这个查询是错误的。我们不知道这是否是 Documentum 中的错误,或者我们配置了 Documentum 错误。我们不知道在哪里可以找到创建此 SQL 或相关组件的 DQL?任何想法?