oracle 查询语句条件多速度会快些吗?

先写一个存储过程从一个视图中取出符合条件的数据放到一个中间表,然后再写一个视图从这个中间表中取数据,为什么第二个视图中间表中取数据时,把从第一个视图中取数据时的存储过程中... 先写一个存储过程从一个视图中取出符合条件的数据放到一个中间表,然后再写一个视图从这个中间表中取数据,为什么第二个视图中间表中取数据时,把从第一个视图中取数据时的存储过程中的条件加上条件后查询的数据会快些。其实中间表中的数据是已经通过存储过程中的条件过滤过的数据。
我通过一个存储过程prc1从视图v1中取一部分符合条件的数据到中间表t1。insert into t1 as select ...from v1 where currency='CNY'等条件。然后再写一个视图v2,从中间表t1中取数据,如create or replace view v2 as select * from t1。大体意思是这样的,不过实质上过程里面向t1中插数据时条件有几个,而视图v2也比较复杂,我在视图v2中加上向t1中插数据时的条件会比不加这些条件的查询数据会快些,其实表t1中的数据已经复合条件啦,为什么我在v2中查询时加上条件还会快些呢?
展开
 我来答
百度网友8bc4c69
推荐于2016-08-08 · TA获得超过205个赞
知道答主
回答量:28
采纳率:0%
帮助的人:0
展开全部
因为Oracle执行时有一个特性:已经执行过一遍的sql,再次执行时,Oracle不会重复查询数据,而是会直接调用上一次查询的结果,所以速度会快上很多。

你的问题我也没太看明白,写的太不清楚了,不过大体意思应该跟上面的原理有关系。第一次执行存储过程时,procedure里的sql已经执行过一遍,得出结果A,再次在该存储过程上加上条件进行查询的话,那么Oracle不会重复执行sql,而是直接在A的基础上进行二次查询,所以速度会快上很多。而不是你所理解的查询条件越多,速度越快。

查询条件的多寡和执行速度不一定挂钩,如果查询条件中的字段有索引,自然速度快,没有的话,就很慢了。说白了,查询条件速度是和索引挂钩的。

希望对你有所帮助

针对补充:其实你说的还是有点糊度- -

对于数据库的查询速度而言,影响查询时间的主要因素并不是查询条件的多寡,而是IO接口的传输数据的速度,因为数据库的自查时间远小于IO的传输时间。你查询出的最终结果数量比较少,那么IO需要传输的数据少,自然速度快;如果数据多,那么IO接口需要传输的数据量大,速度自然降下来了……所以如果条件可以的话,还是多加点限制条件比较好,这样Oracle的反应速度快点。
tyh508
2010-07-20 · TA获得超过165个赞
知道答主
回答量:209
采纳率:0%
帮助的人:155万
展开全部
太多了,看着有点头疼。
看标题,解释是WHERE条件过滤的越多,不一定代表速度快,查询速度由索引等控制,推荐查询时候看一下EXPLAIN PLAN.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不坏de坏坏
2010-07-19
知道答主
回答量:32
采纳率:0%
帮助的人:24.9万
展开全部
看着有点乱

查询条件越多只能代表查询的数据越准确,并不代表会更快,相反,条件越多,查询速度可能越慢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jacky1118mllov
2010-07-19 · TA获得超过440个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:312万
展开全部
好像绕口令。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式