热度 1||
前几天,老朋友叫我升级一下我以前做的一个ACCESS数据库,是大概10年前做的,朋友还在使用,现在库差不多一共有60多个GB大小了,我自豪感油然而生,不过当我打开数据库,看里的一些代码,很让我脸红。原来当初很多代码都没有效率,一些数据库对象也做的比较松散。废话不多说,让我一一道来,让刚开始学习ACCESS的朋友得到一些感悟。
先说数据库的结构吧,MDB+SQL的C/S模式,MDB采用链接表、ADO、DAO等综合方式处理中间环节的数据,同时也是客户端。SQL保存最终数据,同时保存了图片,所以体积膨胀的比较厉害,这是预料中。现在看来,减少了图片在计算机中的管理环节,还是值得的。现在看来,我采用这种系统结构也是很合理的,50多人同时使用过程中没有感觉卡顿,不过在做完业务,上传数据的时候有一些卡,时常有数据上传不成功的现象。
分析:
打开代码一分析,原来上传数据是将一张ACCESS的本地表所有数据合成一条记录,并追加到SQL服务器表中,采用ADO的方式处理的数据,如果很多客户端同时上传,10~30秒才能处理完。ADO因为要打开表,如果表很大的话,仅打开表动作就能搞死机。 select 之后不要用*代替字段名称,一定要仅把需要的字段罗列出来,同时加where把不要的记录过滤掉。有关系表,要小表在左边,大表放右边。到底在ACCESS中执行SQL代码 ,还是在SQL服务器中去执行SQL代码,或是ADO去一句一句执行,这个因地制宜,要分析的话,又得搞一个专题了。
优化总结:
改用纯SQL语句去处理了。很明显感觉到快!上传数据就是两三秒的事情。根据我个人的实际体验,能在服务器上处理,不影响整体性能,应该尽量在服务器上去处理数据,能用SQL尽量用SQL,但要少用游标之类的,万不得已采用ADO或者DAO,感觉DAO比ADO更方便。个人感觉ACCESS使用链接表,在2010中比在2003中速度快。
今天泛泛而谈,以后有时间在谈点详细的吧。写东西头痛,今天到此结束。
|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )
GMT+8, 2024-11-25 06:33 , Processed in 0.068569 second(s), 18 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.