以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [灌水]狐表的保存是否在开挂  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54427)

--  作者:qq121454970
--  发布时间:2014/7/28 12:18:00
--  [灌水]狐表的保存是否在开挂
本帖纯属水贴,走过路过,千万不要难过

经测试:狐表保存1000行(新增行)(Access)耗时1.9秒 ,保存1000行(新增行)(SQL)耗时0.9-1.0秒
然而我用.net的OleDbConnectionOleDbCommand类操作,丫的竟然用了23秒之多(循环SQL执行,为返回主键,一行会执行2个SQL语句,也就是循环执行了2000次)
狐表还是比较给力的啊
[此贴子已经被作者于2014-7-28 12:19:40编辑过]

--  作者:jspta
--  发布时间:2014/7/28 12:20:00
--  
是你的代码不合理
--  作者:qq121454970
--  发布时间:2014/7/28 12:23:00
--  回复:(jspta)是你的代码不合理
从我的理解来说,每保存一行,就促发了行的保存事件(如果是新增行,害的返回主键值,要知道,Access是不支持多SQL语句的),也就代表说,狐表也是循环执行SQL保存的,如果是新增行,从我的理解来说,也执行了2次事件,要么就是他的新增行的主键只是本地计算的
[此贴子已经被作者于2014-7-28 12:24:02编辑过]

--  作者:jspta
--  发布时间:2014/7/28 12:38:00
--  
以下是引用qq121454970在2014-7-28 12:23:00的发言:
从我的理解来说,每保存一行,就促发了行的保存事件(如果是新增行,害的返回主键值,要知道,Access是不支持多SQL语句的),也就代表说,狐表也是循环执行SQL保存的,如果是新增行,从我的理解来说,也执行了2次事件,要么就是他的新增行的主键只是本地计算的
ACCESS不支持多SQL语句?你确定吗?我没有试过,但基本的SQL语句肯定没问题。还有SQL语句就算一条条插入,也很快,1000条也用不了几秒。关于主键值,可以重新加载一次表更新,这样也就相关于一条语句把。你可以参考LSY的关于SQL保存的一个例子


--  作者:qq121454970
--  发布时间:2014/7/28 12:46:00
--  回复:(jspta)以下是引用qq121454970在2014-7-28 12...
想法不错,我找找看,狐狸爸爸呢,也出来说一句啊图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2014/7/28 14:11:00
--  

 回复5楼,你用.net的时候,代码不合理吧?

 

 保存数据的消耗,主要在连接数据库上,如果用事务或者一次性提交sql语句的话,速度会快几十倍的。


--  作者:qq121454970
--  发布时间:2014/7/28 15:03:00
--  回复:(有点甜) 回复5楼,你用.net的时候,代码...
我就OPen了一次,然后循环批量执行sql,执行完之后在Close的图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2014/7/28 15:08:00
--  
 回复7楼,那就不可能这么慢。你好好检查一下你的代码。
--  作者:qq121454970
--  发布时间:2014/7/29 8:02:00
--  回复:(有点甜) 回复7楼,那就不可能这么慢。你...
好的,我晚上重写一个试试
--  作者:lsy
--  发布时间:2014/7/29 8:51:00
--  

拼接InSert Into或Update语句,明显要快于狐表。

但拼接的语句过长,又不执行。

 

几万行的数据,可以每次提交1000行,利用计时器、多线程,自动执行,还不影响做其他工作。