• 主页
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
yuhangding 2012年03月16日
有关存储过程中动态sql执行慢的问题
各位高手,我现在有一个存储过程,就是从一张大表里根据时间,号码等条件查询记录,查询语句使用的是动态sql,传入的条件采用的是绑定变量,输出的是个游标。从程序中调用该过程感觉要7-8秒才能出结果,通过plsql developer中test也不是太快。可是根据查询条件,拼成静态sql则执行的就很快1秒内就出来了。静态sql的执行计划也是合理的。
所以我怀疑是不是在存储过程中,使用动态sql执行计划不对了,没有使用索引。但是怎么看调用一个存储过程的执行计划呢?是不是通过dbms_system.set_sql_trace_in_session或者10046事件就可以呢?oracle中会不会出现使用绑定变量而不使用索引的情况呢?
还有,我给存储过程中传入号码条件的时,因为可能要查询多个号码,所以使用了自定义的嵌套表类型,不知道使用这个会不会影响索引。
PS:我在号码和时间列有复合索引。
...全文
271 点赞 收藏 9
写回复
9 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Oracle
创建于2007-09-28

6391

社区成员

5.4w+

社区内容

Oracle开发相关技术讨论
社区公告
暂无公告