我实验了两个查询语句,
时间30多秒,oracle出错,
1.SELECT count(*) FROM 表 WHERE invspec <> 'a' 用时31秒多,抛出错误.实际结果是1万多
2.SELECT count(*) FROM 表 WHERE invspec like '%0' 用时20秒,正常.实际结果是2千
结论我认为是数据量大,查询时间超时了,所以希望找到如何设置oracle查询超时时间的具体地方.网上查了,没找到.
先谢谢大家指点迷津.
时间30多秒,oracle出错,
1.SELECT count(*) FROM 表 WHERE invspec <> 'a' 用时31秒多,抛出错误.实际结果是1万多
2.SELECT count(*) FROM 表 WHERE invspec like '%0' 用时20秒,正常.实际结果是2千
结论我认为是数据量大,查询时间超时了,所以希望找到如何设置oracle查询超时时间的具体地方.网上查了,没找到.
先谢谢大家指点迷津.
在plsql中查询30多秒,不会超时的,你确定抛出的是超时异常?
有可能是数据量太大,缓存空间不够造成的吧还有 你的sql太慢,需要优化一下,或者数据库需要优化了
看执行计划 可以考虑instr(invspec,'0')>0 来 建个函数索引等
我没有说清楚,执行时间是在plsql中测试的.plsql中没有出错.sql是在程序里调用的.缓存空间如何设置?sql如何优化,就那么一个简单的查询语句.望赐教.
SELECT count(*) FROM 表
针对这种情况如何建索引?多谢
oracle没有超时时间这一说吧 这个得在你executequery里边设置啊
给该表的invspec 这个字段建立索引试试
不行的话 用SELECT/*+rule*/ count(*) FROM 表 WHERE invspec <> 'a' 看看效果
还不行 就执行一下analyze table tablename compute statistics 再查询
用户在一次数据库会话期间可以占用的CPU时间总量(单位为:1%秒)。当达到该时间限制之后,用户就不能在会话中执行任何操作了。用户必须断开与Oracle 的连接再重新建立连接以使该CPU 累计器复位
而且 这属于vc的范畴 不属于oracle了
其他的你可以自己找
Option value changed.
ORA-01013: 用户请求取消当前的操作
还有 这种问题 你最好放到vc板块 在这里 只是解决oracle内部的问题
至于vc里怎么调用 要归vc处理