当我第一次在DBeaver中执行查询时,最多可能需要10-15秒才能显示结果。在SQLDeveloper中,这些查询只需要一小部分时间。
例如: 简单"从table1"中选择column1;声明
DBeaver:2006ms, SQLDeveloper:306ms
示例2(反过来;所以没有服务器端缓存): 简单"从table2"中选择column1;声明
SQLDeveloper:252ms, DBeaver:1933ms
DBeavers状态框说:
2,3和4使用大部分查询执行时间。
我使用的是oracle 11g,SQLDeveloper 4.1.1.19和DBeaver 3.5.8。
请参阅http://dbeaver.jkiss.org/forum/viewtopic.php?f=2&t=1870
可能是什么原因?
答案 0 :(得分:3)
DBeaver会查询与查询中的对象相关的一些元数据。
在Oracle DB上,它查询目录表,例如
3.6.10版引入了一个选项来启用/禁用这些查询中使用的提示。禁用提示对我来说有很大的不同。该选项位于连接编辑对话框的Oracle Properties选项卡中。有关详细信息,请查看issue 360 on dbeaver's github。
答案 1 :(得分:2)
获得洞察力的最佳方式是执行database trace
执行几次查询以消除缓存效果。
在两个IDE中重复以下步骤
激活跟踪
ALTER SESSION SET tracefile_identifier = test_IDE_xxxx;
alter session set events '10046 trace name context forever, level 12'; /* binds + waits */
提供xxxx以识别测试。您将看到此字符串作为跟踪文件名的一部分。
使用级别12查看等待事件和绑定变量。
运行查询
关闭连接
重要的是不要追踪其他事情。
检查两个跟踪文件以查看:
执行了哪些陈述
获取了多少行
DB
其余时间客户端(IDE)负责
如果一个IDE的行为与其他IDE不同,或者如果发布的DB语句不同,这应该为您提供足够的证据来声明。