我的 JDeveloper ADF Web 应用程序中运行的查询存在一个奇怪的问题。它是一个向 Oracle 10g 数据库发出选择语句的简单搜索表单。提交搜索时,ADF 框架(首先)运行查询,(第二)运行包装在“ select count(1) from (...query...)
”中的相同查询——这里的目标是获取总行数,并显示“接下来的 10 个结果”导航控件。
到目前为止,一切都很好。麻烦来自我从第二个查询(其中带有“ count(1)
”的查询)中获得的令人发指的性能。为了调查这个问题,我在 SQL Developer 中复制/粘贴/运行了查询,并惊讶地看到更好的响应。
在比较 ADF 和 SQL Developer 中的查询执行时,我采取了所有措施来确保两种执行的代表性环境: - 新重新启动的数据库 - 对于 OC4J 相同这样我可以确定差异与缓存和/或缓冲无关,在这两种情况下,数据库和应用程序服务器都是新(重新)启动的。
我为这两个会话所做的跟踪说明了这种情况:
查询在 ADF 中运行:
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.97 0.97 0 0 0 0
Fetch 1 59.42 152.80 35129 1404149 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 60.39 153.77 35129 1404149 0 1
SQL Developer 中的相同查询:
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 1.02 1.16 0 0 0 0
Fetch 1 1.04 3.28 4638 4567 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 2.07 4.45 4638 4567 0 1
提前感谢您的任何意见或建议!