注冊 登錄
Office中國論壇/Access中國論壇 返回首頁

laimf的個人空間 http://ctxi.cn/?68853 [收藏] [復制] [分享] [RSS]

日志

ACCESS數(shù)據(jù)庫系統(tǒng)執(zhí)行效率分析

熱度 1已有 1735 次閱讀2015-2-12 16:06 |個人分類:實例剖析| 數(shù)據(jù)庫系統(tǒng)

     前幾天,老朋友叫我升級一下我以前做的一個ACCESS數(shù)據(jù)庫,是大概10年前做的,朋友還在使用,現(xiàn)在庫差不多一共有60多個GB大小了,我自豪感油然而生,不過當我打開數(shù)據(jù)庫,看里的一些代碼,很讓我臉紅。原來當初很多代碼都沒有效率,一些數(shù)據(jù)庫對象也做的比較松散。廢話不多說,讓我一一道來,讓剛開始學習ACCESS的朋友得到一些感悟。

    先說數(shù)據(jù)庫的結構吧,MDB+SQL的C/S模式,MDB采用鏈接表、ADO、DAO等綜合方式處理中間環(huán)節(jié)的數(shù)據(jù),同時也是客戶端。SQL保存最終數(shù)據(jù),同時保存了圖片,所以體積膨脹的比較厲害,這是預料中,F(xiàn)在看來,減少了圖片在計算機中的管理環(huán)節(jié),還是值得的。現(xiàn)在看來,我采用這種系統(tǒng)結構也是很合理的,50多人同時使用過程中沒有感覺卡頓,不過在做完業(yè)務,上傳數(shù)據(jù)的時候有一些卡,時常有數(shù)據(jù)上傳不成功的現(xiàn)象。

     分析:

     打開代碼一分析,原來上傳數(shù)據(jù)是將一張ACCESS的本地表所有數(shù)據(jù)合成一條記錄,并追加到SQL服務器表中,采用ADO的方式處理的數(shù)據(jù),如果很多客戶端同時上傳,10~30秒才能處理完。ADO因為要打開表,如果表很大的話,僅打開表動作就能搞死機。 select 之后不要用*代替字段名稱,一定要僅把需要的字段羅列出來,同時加where把不要的記錄過濾掉。有關系表,要小表在左邊,大表放右邊。到底在ACCESS中執(zhí)行SQL代碼 ,還是在SQL服務器中去執(zhí)行SQL代碼,或是ADO去一句一句執(zhí)行,這個因地制宜,要分析的話,又得搞一個專題了。

     優(yōu)化總結:

     改用純SQL語句去處理了。很明顯感覺到快!上傳數(shù)據(jù)就是兩三秒的事情。根據(jù)我個人的實際體驗,能在服務器上處理,不影響整體性能,應該盡量在服務器上去處理數(shù)據(jù),能用SQL盡量用SQL,但要少用游標之類的,萬不得已采用ADO或者DAO,感覺DAO比ADO更方便。個人感覺ACCESS使用鏈接表,在2010中比在2003中速度快。

    今天泛泛而談,以后有時間在談點詳細的吧。寫東西頭痛,今天到此結束。

    

發(fā)表評論 評論 (1 個評論)

回復 roych 2015-3-12 17:23
   沒用過MSSQL,最近太忙了,沒時間學。不過感覺在MSSQL里,很多人都喜歡用子查詢。不知道是否比內聯(lián)接查詢快。

facelist doodle 涂鴉板

您需要登錄后才可以評論 登錄 | 注冊

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 08:27 , Processed in 0.071896 second(s), 18 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部