存储过程的SQL执行慢,同SQL单独执行快,咋回事? 存储过程的SQL执行慢,同SQL单独执行快,咋回事?就是一个很简单的insert 语句。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把存储过程和 SQL 都贴出来看一下.------------------------------------------------------------------------------ Blog: http://blog.csdn.net/tianlesoftware 网上资源: http://tianlesoftware.download.csdn.net 相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx DBA1 群:62697716(满); DBA2 群:62697977 一般来说是存储过程快于SQL语句的 给出代码,不然看不出问题。另外2楼说错,直接的sql语句执行效率肯定要高于存储过程。 贴代码 你如何确定出 存储过程里的sql慢了 还是存储过程慢了 INSERT/*+APPEND */ INTO A (A1 ,-- 交易日期 A2 ,-- 交易时间 A3 ,-- 账号 A4 ,-- 客户编号 A5 ,-- 客户帐号 A6 ,-- 营业机构 A7 ,-- 营业机构名称 A8 ,-- 前台柜员 A9 ,--前台柜员姓名 A10 ,-- 交易类别 A11 ,-- 冲正标志 A12 ,-- 借贷别 A13 ,--借方发生额 A14 ,--贷方发生额 A15 ,-- 凭证种类 A16 ,-- 摘要 A17 ,-- 交易流水号 A18 ,-- 钞汇鉴别 A19 ,-- 币别 A20 ,-- 帐户余额 A21 -- 交易代码 ) SELECT/*+ RULE */ B1 ,-- 交易日期 B2 ,-- 交易时间 B3 ,-- 账号 B4 ,-- 客户编号 B5 ,-- 客户帐号 B6 ,-- 营业机构 B7 ,-- 营业机构名称 B8 ,-- 前台柜员 B9 ,--前台柜员姓名 B10 ,-- 交易类别 B11 ,-- 冲正标志 B12 ,-- 借贷别 B13 ,--借方发生额 B14 ,--贷方发生额 B15 ,-- 凭证种类 B16 ,-- 摘要 B17 ,-- 交易流水号 B18 ,-- 钞汇鉴别 B19 ,-- 币别 B20 ,-- 帐户余额 B21 -- 交易代码 FROM B SA --活期企业存款事件 LEFT JOIN CTLR ON SA.XT_OP_TRL = TLR.OP_NO WHERE SA.ACCT_NO ='3306372431014206372433001866' AND SA.SA_TX_DT >='2010-02-01' AND SA.SA_TX_DT <='2010-02-20'就是这么简单的SQL语句,只不过是源表数据级上百万 LZ你把 append和rule两个hint去掉,再分别执行看看效果如何?按道理说不应该出现这种问题。另外LS的,这个我没法举出例子来证明,不过存储过程是一段程序,比起一段不用编译不用判断的sql来说,肯定要慢。 采用静态执行,可以提高存储过程的性能eg: strSql := 'insert a values(:1,:2,:3)' execute immediate strSql using 'a','b','c'; 删除表里的重复数据的sql oracle 创建一个包,包里申明了过程和函数 导出ORACLE数据时提示'SET_NO_OUTLINES' 急:ora-12699本机服务内部错误,愿呈上100分 祝大家圣诞节快乐!100分求一SQL 语句。 关于存储过程 请教有关RAC 1节点offline 的处理问题 类型转换问题 求一个SQL语句,大家帮忙了 为什么我在安装oracle9i的过程中,大约14%时总是出错! 求一sql语句,看描述 LINUX ORACLE 10g 数据库备份
把存储过程和 SQL 都贴出来看一下.
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977
(A1 ,-- 交易日期
A2 ,-- 交易时间
A3 ,-- 账号
A4 ,-- 客户编号
A5 ,-- 客户帐号
A6 ,-- 营业机构
A7 ,-- 营业机构名称
A8 ,-- 前台柜员
A9 ,--前台柜员姓名
A10 ,-- 交易类别
A11 ,-- 冲正标志
A12 ,-- 借贷别
A13 ,--借方发生额
A14 ,--贷方发生额
A15 ,-- 凭证种类
A16 ,-- 摘要
A17 ,-- 交易流水号
A18 ,-- 钞汇鉴别
A19 ,-- 币别
A20 ,-- 帐户余额
A21 -- 交易代码
)
SELECT/*+ RULE */
B1 ,-- 交易日期
B2 ,-- 交易时间
B3 ,-- 账号
B4 ,-- 客户编号
B5 ,-- 客户帐号
B6 ,-- 营业机构
B7 ,-- 营业机构名称
B8 ,-- 前台柜员
B9 ,--前台柜员姓名
B10 ,-- 交易类别
B11 ,-- 冲正标志
B12 ,-- 借贷别
B13 ,--借方发生额
B14 ,--贷方发生额
B15 ,-- 凭证种类
B16 ,-- 摘要
B17 ,-- 交易流水号
B18 ,-- 钞汇鉴别
B19 ,-- 币别
B20 ,-- 帐户余额
B21 -- 交易代码
FROM B SA --活期企业存款事件
LEFT JOIN CTLR ON SA.XT_OP_TRL = TLR.OP_NO
WHERE SA.ACCT_NO ='3306372431014206372433001866'
AND SA.SA_TX_DT >='2010-02-01'
AND SA.SA_TX_DT <='2010-02-20'就是这么简单的SQL语句,只不过是源表数据级上百万
另外LS的,这个我没法举出例子来证明,不过存储过程是一段程序,比起一段不用编译不用判断的sql来说,肯定要慢。
eg:
strSql := 'insert a values(:1,:2,:3)'
execute immediate strSql using 'a','b','c';