壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3161|回复: 15

判斷已收但未檢的料的方法

[复制链接]
发表于 2007/5/22 13:23:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
各位,我用以下這段SQL去查已收但未檢的料,速度慢得不行,請問有哪位高人可以提供更好的方法嗎?謝謝!!!

select * from rcv_transactions
where transaction_type = 'RECEIVE'  
   and transaction_id not in
                     (select parent_transaction_id
                        from rcv_transactions
                       where transaction_type <> 'RECEIVE')
发表于 2007/5/22 13:30:38 | 显示全部楼层
select * from rcv_transactions r
where r.transaction_type = 'RECEIVE'  
And Not Exists (Select 1
                From rcv_transactions rt
                Where rt.transaction_type = 'RECEIVE'
                And rt.parent_transaction_id = r.transaction_id
                )
 楼主| 发表于 2007/5/22 13:47:52 | 显示全部楼层
謝謝!!
請問您這一段是查已收但未檢的料嗎?我查的好像有點問題,應該不會有那麽多條記錄呀好幾萬呀.
发表于 2007/5/22 14:00:03 | 显示全部楼层
我只是在你的查询基础上做一个小小的调整,可以加快查询速度,具体的条件需要你跟据情况添加。最好加上接受库存组织的限制,我想你不需要所有的组织都取出来吧?
 楼主| 发表于 2007/5/22 14:10:31 | 显示全部楼层
謝謝!
不過我們有可能所有組織都取出來.
這是我根據您的SQL修改過來的:
select * from rcv_transactions r
where r.transaction_type = 'RECEIVE'  
And Not Exists (Select *
                From rcv_transactions rt
                Where rt.transaction_type <> 'RECEIVE'
                And rt.parent_transaction_id = r.transaction_id
                )
但速度還是慢..
发表于 2007/5/22 14:21:25 | 显示全部楼层
我大多数方法都测试了一下,这个是我能调适的最快速度了,平均1.12秒左右。
可能你的数据量有几十万条以上吧。你再试试看:
Select * From rcv_transactions r
Minus
select * from rcv_transactions r
where r.transaction_type = 'RECEIVE'  
And exists  (Select 1
                          From rcv_transactions rt
                          Where rt.transaction_type <> 'RECEIVE'
                          And rt.parent_transaction_id = r.transaction_id
                          )


Select * From rcv_transactions r
Minus
select * from rcv_transactions r
where r.transaction_type = 'RECEIVE'  
And r.transaction_id In (Select rt.parent_transaction_id
                          From rcv_transactions rt
                          Where rt.transaction_type <> 'RECEIVE'
                          )

这两句在处理大量数据时可能会好一些。
一般系统应用时我是区分不同的OU或者库存组织出报表的,不会对整张表的数据操作
 楼主| 发表于 2007/5/22 14:36:58 | 显示全部楼层
非常感謝您的幫助!
可能是我的 rcv_transactions 表中的數據太多了,應該會有幾十萬條,所以跑了十多分鍾還是跑不出來...暈
发表于 2007/5/22 14:43:51 | 显示全部楼层
呵呵,不客气。你们的系统已经使用挺长时间了吧,如果你们有这种报表需求的话,建议你们建一张客户化表和一个挂在rcv_transactions下的表触发器,新增或者删除记录的时候能够通过触发器更新这张客户化表的余额或者符合条件的记录数,这样做报表的时候直接读这张客户化表就可以了
 楼主| 发表于 2007/5/22 14:49:25 | 显示全部楼层
呵呵,我想這也是遲早要做的事情了,不過現在我還是在先做完目前這個收料待檢的判定.基於效率問題,看來我要想別的方法去判斷了,謝謝您!
 楼主| 发表于 2007/5/29 10:52:29 | 显示全部楼层
解決了!用rcv_transactions這個表來判斷就OK了.呵呵!
发表于 2007/5/29 11:12:37 | 显示全部楼层
呵呵,如果不介意的话最好把你的方法分享一下。
 楼主| 发表于 2007/6/2 14:49:22 | 显示全部楼层
哦...寫錯了,應該是用 rcv_supply  這支表.只要看一下這支表的作用就知道了,呵呵!!
发表于 2007/6/2 16:10:27 | 显示全部楼层
Exists确实可以很好的提高效率
发表于 2007/6/5 14:22:27 | 显示全部楼层
强烈建议分享一下lz得出的结论
 楼主| 发表于 2007/6/8 15:21:18 | 显示全部楼层
其實我寫那段SQL的結果與 rcv_supply 這個表裏的內容是一樣的.所以,我們還是要多看一下TRM呀...呵呵!
发表于 2007/6/8 16:45:26 | 显示全部楼层
呵呵,这个信息很重要!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 13:02 , Processed in 0.015835 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表