首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于效率的sql语句,帮忙看看解决方法

2012-03-15 
关于效率的sql语句,帮忙看看select ss.* ,rownumfrom (select 手机号码 ,sum(充值金额) B from 充值记录表

关于效率的sql语句,帮忙看看
select ss.* ,rownum 
from (select 手机号码 ,sum(充值金额) B from 充值记录表 group by 手机号码 order by B DESC) ss
where 手机号码='13313312345'


大家帮忙看一下这个sql语句写得有没有什么问题,除了建立索引还有哪些优化的地方?




[解决办法]

SQL code
select ss.* ,rownum  from (select 手机号码 ,sum(充值金额) B from 充值记录表where 手机号码='13313312345'group by 手机号码 order by B DESC) ss
[解决办法]
既然只查询一个手机的汇总,应该在子查询中就应该将其它的手机号过滤掉。
而且可以省去费时的ORDER BY
参考代码如下:
SQL code
SELECT ss.*, ROWNUM  FROM (SELECT 手机号码, SUM(充值金额) B  FROM 充值记录表  WHERE 手机号码='133133123445' GROUP BY 手机号码   ) ss
[解决办法]
GROUP BY 手机号码 也可以省略,就一个号码,还GROUP BY 什么呢。
SELECT ss.*, ROWNUM
FROM 
(SELECT 手机号码, SUM(充值金额) B 
 FROM 充值记录表 
 WHERE 手机号码='133133123445'
) ss
[解决办法]
因为有聚合函数啊,否则会提示错误。
当然可以通过加上over()来解决。
参考如下:
SQL code
SELECT ss.*, ROWNUM  FROM (SELECT 手机号码, SUM(充值金额) OVER() AS  B  FROM 充值记录表  WHERE 手机号码='133133123445' ) ss 

热点排行