当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 求一条查询sql的优化方法
帖子发表于 : 2009-07-22 23:52 

注册: 2008-11-01 21:42
帖子: 1028
地址: 树下板凳
送出感谢: 0 次
接收感谢: 1
初学数据库不久,写sql一直很低效,这次实在是太低效了,没办法来求助,麻烦大家帮忙解答哈
查询结果要求: 查出表b中满足条件的数据( cnt1>=10 and cnt2>=1000)
列出表b中满足上述条件的每条数据(上面的结果是满足条件的数据集合,现在要把他们每一条都分列列出)
这是我写的sql
select a.dbactno,a.merchno,c.merchname,b.tranamt,b.hostdate,b.hosttime ,c.bankno from
(select * from
(select merchno,dbactno,count( dbactno) cnt1,sum(tranamt) cnt2 from Toldjournal where 1=1 AND HostDate >= '090711' AND HostDate <= '090722'and retcode = '00000' and status = '0' and transtype = '1' group by merchno,dbactno)
where cnt1>=10 and cnt2>=1000 ) A,toldjournal B,Tmerchant C
where a.merchno =b.merchno and a.merchno = c.merchno and a.dbactno = b.dbactno AND HostDate >= '090711' AND HostDate <= '090722' and b.retcode = '00000' and b.status = '0' and b.transtype = '1'
表b和表c merchno都是主键,oracle数据库,懒得区分大小写了,最好能用一条高效的sql语句搞定(中间有两个子查询,可能耗资源比较多,还有同样的条件查两遍太低效了)


_________________
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求一条查询sql的优化方法
帖子发表于 : 2009-07-24 21:07 

注册: 2008-04-07 17:12
帖子: 19
送出感谢: 0 次
接收感谢: 0 次
不太清除你的表结构及表数据:
可以这样试试看
*******************************************************************************
with share_tb as
(
select a.merchno,a.dbactno, b.merchname, b.bankno,
a.tranamt,a.hostdate,a.hosttime
from Toldjournal a ,Tmerchant b
where a.merchno = b.merchno
AND a.HostDate >= '090711'
AND a.HostDate <= '090722'
and a.retcode = '00000'
and a.status = '0'
and a.transtype = '1'
)

select b.dbactno,b.merchno,b.tranamt,b.hostdate,b.hosttime
from
(select merchno,dbactno
from share_tb
group by merchno,dbactno
having count(dbactno) >= 10 and sum(tranamt) >=1000) a, share_tb b
where a.merchno = b.merchno and a.dbactno = b.dbactno
*******************************************************************************
我的SQL也很烂 :em03


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 求一条查询sql的优化方法
帖子发表于 : 2009-07-24 21:50 

注册: 2008-11-01 21:42
帖子: 1028
地址: 树下板凳
送出感谢: 0 次
接收感谢: 1
比我强多了 ,估计效率会提高不少,至少限制条件不会查两次,谢谢了 ,待俺去试试


_________________
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译