各位大侠,我的标题有点奇怪,请看后文。
在库履历data大约有250万记录,保存每天材料的入库数据,出库数据。在库数据也是每日保存的,但是不一定与入出库同步,比如,7/4的进行了入出库操作,但在库只做到7/2。
有一个view用来查询最近一次结算日的在库数据。
现在从view抽出符合条件的记录登陆到另一个表。一开始执行要花5分钟左右,很慢很慢。
过一段时,突然就变快了,20秒左右。
这段时间内,在库履历data没有新增记录,只做了一些查询,
另外还加了一个索引,但是又删除。
求高人解释原因,为什么会变快,怎么让这种变快一开始就有效啊?
在库履历data大约有250万记录,保存每天材料的入库数据,出库数据。在库数据也是每日保存的,但是不一定与入出库同步,比如,7/4的进行了入出库操作,但在库只做到7/2。
有一个view用来查询最近一次结算日的在库数据。
现在从view抽出符合条件的记录登陆到另一个表。一开始执行要花5分钟左右,很慢很慢。
过一段时,突然就变快了,20秒左右。
这段时间内,在库履历data没有新增记录,只做了一些查询,
另外还加了一个索引,但是又删除。
求高人解释原因,为什么会变快,怎么让这种变快一开始就有效啊?
你第二次查询的时候,是直接从database buffer中读取的,自然速度快了
原始数据EXPDAT.DMP约2G左右,
imp之后,给在库履历data加了一个索引,建立了上述view。
就是测试数据。接下来的操作如帖子所描述的那样。
之前:5分钟之后
第一次:20秒
第二次:5秒
......
ALTER SYSTEM FLUSH BUFFER_CACHE
清除缓存
第N次:20秒
第N+1次:5秒
ALTER SYSTEM FLUSH BUFFER_CACHE;
执行后就变快了,求高人解释!
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
执行后就从5分变到20s。