快速获得销售订单最后一次修改的金额

happysophie 2008-07-14 04:26:02
如何用最快的查询速度获得销售订单最后一次修改的金额。

这是一个数据量非常大的查询。相当于历史数据,包括发货历史视图A,销售订单历史视图B等等数据,数据量非常大。估计有百万条。

结果——得到发货物料的数量,金额等数据。

做法——
发货物料的数量等数据在发货历史视图A里。有时间的限定,获得这段时间的订单号,行号以及数量等数据。

发货物料的金额的数据在销售订单视图B里。数据量仍然非常多,一个销售订单的历史数据有两行甚至多行,第一行是建立销售订单,第二行是修改销售订单的数据,可能还有第3行,第4行,根据修改的次数而定。
而我需要的是某一个销售订单最后一次修改的数据。不能重复。
这个数据按照大家的写法我用的是not exists。
这个查询没有时间的限定,需要通过与发货视图的订单、行号的关联来得到金额。

但由于数据量太大,10分钟还没算出来。其实,如果不需要金额,那么大约2分钟左右能得到结果。如果加入金额,但是不是取的最后一次修改的金额,就是说金额是重复的,也大约3-4分钟能得到结果。但用not exists取最后一次修改的金额,查询的时间就非常的长!

我不知道说明白没有。请大家给我一个思路,如何用最快的查询获得销售订单最后一次修改的金额!谢谢。

另外,这两个视图没有什么索引。
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2008-07-15
  • 打赏
  • 举报
回复
。。。。
happysophie 2008-07-15
  • 打赏
  • 举报
回复
谢谢大家。
问题已经解决。主要是当时服务器上用户太多。等快下班时,顺利得到结果。
结帖。
Herb2 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ojuju10 的回复:]

表结构呢?
[/Quote]
wgzaaa 2008-07-14
  • 打赏
  • 举报
回复
--试下这个
先按时间段查 历史视图A里 订单号,行号以及数量,存入一表变量中,再在表变量中用exists查最大行号及对应数量,再将结果存入另一表变量
用另一表变量的数据 left join 销售订单视图B (订单号、行号的关联)取得金额
-----------------------------------
这两个视图没有什么索引。--能建还是建了
hanjs 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yrwx001 的回复:]
SQL codeselect top 1 * from tb where orderid = @orderid order by time desc


[/Quote]
yrwx001 2008-07-14
  • 打赏
  • 举报
回复
select top 1 * from tb where orderid = @orderid order by time desc 
中国风 2008-07-14
  • 打赏
  • 举报
回复
參照:
http://topic.csdn.net/u/20080626/00/43d0d10c-28f1-418d-a05b-663880da278a.html
ojuju10 2008-07-14
  • 打赏
  • 举报
回复

表结构呢?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧