oracle8.0.5 以后的版本为什么变慢了

做梦的猫 2010-08-15 10:45:45
服务器:oracle10g

pb6.5 + ora805(客户端):某数据窗口查询速度正常(含参数)

客户端换成 ora8i 或 ora10g 后用下列版本的 pb 测试:
pb6.5.1, pb8.04, pb10.5, pb11.5

结果:8i 和 10g 奇慢无比(由几秒钟延长到几分钟),但 8i 似乎又比 10g 稍快一点点

特点:数据窗口无参数时正常

另外:某些查询 sql 在 8.0.5 下是正常的,但在 9i 下返回的数据却少了(用 plsql7 测试)


不知各位是否碰到过类似问题?又是如何解决的?
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
做梦的猫 2010-08-22
  • 打赏
  • 举报
回复
谢谢楼上的兄弟!

问题解决了,居然还是和索引有关系!

A, B 两表关联查询时,是以两个列进行连系的,其中 A 表的两列是主键,换句话说也就是有索引;B 表的两列则没有索引。这就是导致在 oracle10g 客户端下速度骤然变慢的原因!在 B 表中对此两列建立索引后,问题消除。

从这次的问题我觉得有以下几点值得我们注意:
1. ora8.0 客户端在查询机制方面确实不同于后来的高级版本,可能导致我们对数据库优化方面的忽视。

2. pb 中静态 sql 和动态 sql 的查询效率是有较大区别的,静态 sql 对数据库的优化要求较低,所以速度比较快;而动态 sql 则要求对数据库做较好的优化,否则同样的查询,速度会比静态 sql 慢很多。
kitty1kitty 2010-08-22
  • 打赏
  • 举报
回复
不懂,帮顶
做梦的猫 2010-08-18
  • 打赏
  • 举报
回复
果然没有奇迹。
做梦的猫 2010-08-17
  • 打赏
  • 举报
回复
重做了数据窗口对象,也试了重建索引,问题依旧。

pb8 下用 oracle8.0 接口速度也很正常。我的感觉是,pb 对 o73 的接口支持做得比较好,o84 之后就很很马虎了。明天再试一下 pb12 的评估版,看看有没有奇迹出现。
做梦的猫 2010-08-16
  • 打赏
  • 举报
回复
的确很难想象这是 oracle 的 bug,我情愿相信这是 pb 的 bug!但连接上唯一的区别的就是 oracle 的版本,8.0 以下是 @tns:servername,以上则是直接写 servername,就这点差别。

明天我试一下在 8i 环境下手工重建这个有问题的数据窗口对象(原来的是直接升级上来的),如果问题没有了,就说明这是 pb 的 bug。
永生天地 2010-08-16
  • 打赏
  • 举报
回复
不应该是oracle的问题,否则会有很多人叫。

是不是连接上有区别
做梦的猫 2010-08-16
  • 打赏
  • 举报
回复
应该不是索引问题。我把问题描述得再详细一点:

有两个表的关联查询,其中某表的列 A 需要设置查询条件,例如“select...where A = 1”;如果我直接把 A = 1 这个条件写在数据窗口对象的 sql 里,则检索正常。但若对此数据窗口对象定义一个参数,例如 param_a,则 sql 形式为“select...where A = :param_a”;然后在脚本中通过变量方式传入,例如:dw_1.Retrieve(1),则速度慢了几百倍!何故?
xuam 2010-08-16
  • 打赏
  • 举报
回复
估计是索引问题,需要重建试试!
lightsword1 2010-08-16
  • 打赏
  • 举报
回复
看来要重新配置连接

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧