Oracle 视图查询有的时候很慢,有的时候查询很快

本人最近在做数据的采集,但是发现一个问题,同样一个SQL语句,有的时候很快,有的时候很慢,这个SQL的数据是从视图出数据的,不是从表里出的,请教高手什么会出现时快时慢的情... 本人最近在做数据的采集,但是发现一个问题,同样一个SQL语句,有的时候很快,有的时候很慢,这个SQL的数据是从视图出数据的,不是从表里出的,请教高手什么会出现时快时慢的情况????快的时候2秒钟,慢的时候10分钟数据都出不来。 展开
 我来答
超尘离梦
推荐于2018-04-07 · TA获得超过1477个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:257万
展开全部
这种情况有很多可能性,首先,你的服务器的负载情况会影响到你的数据培散读取速度的,如果数据库服务器执行的进程过多,会导致查询速度下降很多。
另外,第一次执行同哪中槐一个SQL的时候,都会比较慢一些,再次执行的时候,由于数据等还在内存内,会速度快很多。
再者,在Oracle中,有共享SQL语句的机制,在第一次解析之后,  ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享. 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它 和之前的执李友行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径. 这样也会大大的提高效率。
华夏日长兴
2010-06-18 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3696万
展开全部
你的表里边没建索引吧:
1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、旁闹复禅启芦合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;
以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来贺带说,负面影响更大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mailking2001
2010-06-18 · TA获得超过817个赞
知道小有建树答主
回答量:1037
采纳率:100%
帮助的人:750万
展开全部
能不能把你视图的语句发出来,最好有视图中关联的表的 表结构也发出来!

2秒钟的毁嫌厅者晌时候可能数据量比较小,10分钟的 时候数据量比较大,单从这个不判断不了什么!
解决这问题先判断视图的语句的where后的条件是否建有索引,没有的话,建立索引。判断视图涉及到纤隐的表的数据量,表增删改是否频繁。
优化下视图查询语句,这个看情况而论。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
君子好美女
2010-06-18 · TA获得超过255个赞
知道答主
回答量:932
采纳率:0%
帮助的人:278万
展开全部
明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式