存储过程第一次执行耗时30分钟,第二次开始每次耗时不到3分钟,这是什么原因?

存储过程执行耗时,主要是一个循环,A表中的字段X的每个值都在B表中全表查询,看是否有记录... 存储过程执行耗时,主要是一个循环,A表中的字段X的每个值都在B表中全表查询,看是否有记录 展开
 我来答
zero125381039
2014-11-07
知道答主
回答量:7
采纳率:0%
帮助的人:3万
展开全部
sql是高级语言,数据库系统执行sql之前要将sql语句进行解析(相当于编译),这个过程叫硬解析;数据库系统每次执行sql之前都会检查共享池中是不是存在已经解析过的语句,如果有就拿来直接用,这叫软结息。软解析比硬解析效率高,这是影响因素之一;
二、第一次执行可能没有走索引,第二次执行使用第一次执行的执行计划
三、看你的存储过程做了些什么,有可能第一次把活干完了,导致第二次执行没什么活干
以上回答基于oracle体系结构
迪凯特科技(北京)有限公司
2023-07-28 广告
要从电脑的一个串行口接收数据并将其从另一个串行口发送出去,你可以使用以下步骤:1. 确定你要使用的两个串行口。在大多数计算机上,串行口通常被称为COM1、COM2等。确保你了解每个串行口的名称或编号。2. 编写一个程序来读取来自一个串行口的... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
二两牛肉不要面
2014-09-26 · 超过62用户采纳过TA的回答
知道答主
回答量:296
采纳率:0%
帮助的人:176万
展开全部
因为第二次有缓存了。
追问
有缓存这个我知道的,但是有缓存速度会提升这么多吗?因为速度直接提升了10倍有点夸张吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
殇忄路
2014-09-26 · TA获得超过560个赞
知道小有建树答主
回答量:478
采纳率:81%
帮助的人:328万
展开全部
不会呀,时间差距这么大应该不是procedure的缓存问题,应该是SQL的问题吧。。。
追问
我也觉得不是缓存问题,可是SQL没有变啊,我把执行了一次以后修改的内容改回去,重新执行也还是这么快,循环的查询也是每次都应该执行的,没有加什么额外条件 会使后面几次执行就不进行全表扫描
追答
把SQL提出来执行看看就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式