以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 执行效率测试 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49005) |
||||
-- 作者:lsy -- 发布时间:2014/4/10 15:18:00 -- 执行效率测试 五万行的数据。
先清空计算结果列(初始是清空的)
两种不同的代码: 用RaiseDataColChanged,差不多就是死机,时间太长,等不起。 用SQLCommand,十几分钟或二十几分钟。
|
||||
-- 作者:don -- 发布时间:2014/4/10 15:46:00 -- 兩種方法,代碼都有改善空間吧 |
||||
-- 作者:有点甜 -- 发布时间:2014/4/10 15:49:00 -- 测试了一下,用datacolchanged,几十秒。
方案:把对应数据fill到一个附加表去,然后去这张表里查询统计sum值
方案2:如果是一次性的话,可根据情况用代码统计值,而不用sum函数
原因:http://www.foxtable.com/help/topics/2225.htm
|
||||
-- 作者:lsy -- 发布时间:2014/4/10 15:57:00 -- 直接这样,比较快: Dim now As Date = Date.Now
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/4/10 15:59:00 -- DataColChanged可不止几十秒,除非之前用其他方法算过一次,表中已经有算好的值。
在我的i5笔记本,12秒完成:
Dim dt As Date =Date.now() [此贴子已经被作者于2014-4-10 16:01:23编辑过]
|
||||
-- 作者:黄训良 -- 发布时间:2014/4/10 16:26:00 -- 以下是引用lsy在2014-4-10 15:57:00的发言:
直接这样,比较快: Dim now As Date = Date.Now
不能填充数据! |
||||
-- 作者:lsy -- 发布时间:2014/4/10 16:36:00 -- 快慢都保留着,看情况选用。 狐爸的方法不错。 |
||||
-- 作者:jspta -- 发布时间:2014/4/10 16:45:00 -- update a set a.零售金额 = b.零售金额 from {药品收发记录} a inner join (Select 单据号,Sum(成本金额) As 零售金额 From {药品收发记录} Group By 单据号) b on a.单据号 = b.单据号 这句话居然不能执行,提示操作符丢失? 这个耗时主要在保存与LOAD上,代码没太大问题。 照成这个操作结果主要是表结构设计不合理,这张表时严重不符合数据库要求。设计合理点,用查询表直接就解决了
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2014/4/10 16:49:00 -- 哈哈,这样好,1秒不到就可以了。 |
||||
-- 作者:lsy -- 发布时间:2014/4/10 17:07:00 -- 以下是引用jspta在2014-4-10 16:45:00的发言:
update a set a.零售金额 = b.零售金额 from {药品收发记录} a inner join (Select 单据号,Sum(成本金额) As 零售金额 From {药品收发记录} Group By 单据号) b on a.单据号 = b.单据号
这句话居然不能执行,提示操作符丢失?
这个耗时主要在保存与LOAD上,代码没太大问题。
照成这个操作结果主要是表结构设计不合理,这张表时严重不符合数据库要求。设计合理点,用查询表直接就解决了 就是测试代码效率,赋值到数据表,不是查询表。 |