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 测试)


不知各位是否碰到过类似问题?又是如何解决的?
...全文
79 点赞 收藏 10
写回复
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
看来要重新配置连接
回复
发动态
发帖子
数据库相关
创建于2007-09-28

731

社区成员

PowerBuilder 数据库相关
申请成为版主
社区公告
暂无公告