Oracle 语句查询很快但SUM求和后就慢

Oracle语句SELECTSCOREFROMUSERWHEREAGE<25ANDAGE>15查询后用时0.0245但是如果SELECTSUM(SCORE)FROMUSE... Oracle 语句 SELECT SCORE FROM USER WHERE AGE<25 AND AGE>15
查询后用时0.0245 但是如果
SELECT SUM(SCORE) FROM USER WHERE AGE<25 AND AGE>15 用时5分钟 。这里的AGE是有索引的。求高手解答
展开
 我来答
阳光上的桥
推荐于2018-05-07 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65812
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
在开发工具里面执行你第一个语句可能只查询了前10条,并没有把所有15~25岁的清单显示出来。

理论上你的两个语句执行时间应该是差不多的,你在第二个语句增加一个查询项目COUNT(*)试试看总共满足条件的数据有多少,看看第一条语句返回的结果是多少,是不是我上面说的情况。
更多追问追答
追问
COUNT一下当然数据会很多啊  我就不知道为什么SUM 这么慢 COUNT也慢。
追答
很正常的呀,是会这么慢,如果你第一个语句把所有数据都显示出来,可能比第二个语句更慢。时间差异的关键,就是第一个语句只搜索数据库里面的几条,第二语句搜索数据库里面很多数据。好比第一个语句是到幼儿园随便抓个女孩看看口袋里面有多少钱,第二个语句是把幼儿园所有女孩的口袋里面的钱加起来,第一件事情非常简单,第二件时间非常困难,就是因为摸的口袋数不同。任何数据库都是这样的,幼儿园也是这样的。
牛角山麦子
2011-10-21 · TA获得超过1554个赞
知道小有建树答主
回答量:651
采纳率:75%
帮助的人:540万
展开全部
正常来说不可能这样,针对两个语句各做一个10046 trace,比较plan. row operation, 等待事件有什么不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ddd0aca8b
2011-10-31 · TA获得超过176个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:143万
展开全部
检查一下执行计划吧。如果不走索引,可以试试走索引的办法:
SELECT /*+ index(USER 索引名) */
SUM(SCORE) FROM USER WHERE AGE<25 AND AGE>15
这样写法保证走索引。
如果走索引还慢,可以试试不走索引是否能快一些:
SELECT /*+ full(USER ) */
SUM(SCORE) FROM USER WHERE AGE<25 AND AGE>15
这两种方法你选择一个相对快的就行了。
如果想再快,可以age和score联合建索引试试。
如果数据量大,并且其中数据多数都是15到25之间的,那么估计全表扫描会快一些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2011-10-21 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
user是oracle的保留字吧。。。。 这样用作表名不知道有没问题,另外AGE<25 AND AGE>15 换成age between 15 and 25试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
满笑鲆0z
2011-10-21 · TA获得超过250个赞
知道答主
回答量:89
采纳率:0%
帮助的人:68.5万
展开全部
oracle的机制是基于代价的,可能没有走到索引上。
在plsql中点击F5,看看走没走到索引上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式