不同連接資料庫的方式效率差非常多(FoxPro vs MySQL) |
尚未結案
|
taisun
一般會員 發表:10 回覆:8 積分:3 註冊:2005-08-22 發送簡訊給我 |
大家好,小弟在寫一套進銷存資料庫,舊系統是DBF與cdx檔構成的資料庫系統,當初為客戶寫時就系統已經有數十萬筆的資料了。為了比較不同方式的聯接與資料庫所造成的效能,所以我ㄧ共嚐試了三種方式來開啟一個七十萬筆的表格,這三種皆由DBGrid顯示: (先註明為什麼要開啟這麼大的表格,爬文過會看到大家一致認同不要開啟這麼大的表格,而是用篩選的方式,但是有時候客戶需求就一定得開啟,例如視覺化的搜尋(做Locate)以及Last的表格操作,因此利用PacketRecords來操作DBGrid是不適合的。) 一、一開始拿來想說他是FOXPRO的資料庫,我就拿BCB6.0 + BDE來做,結果開啟表格並且顯示在DBGrid,花不到1秒且只要18.6MB,
雖然效率超好,但是有時候正常的Query操作卻發生當掉,搞得我快瘋了(猜是index搞鬼),論壇這邊少有講到FoxPro的東西,後來就決定把整個資料庫搬到MySQL,花了很大的力氣。再嚐試了下列兩種連接方式:
二,這邊有大大建議MySQL + Zeos,我嘗試的結果開啟加顯示共 27秒,記憶體125MB。 三、後來看到書中說明用dbExpress + MySQL,,就嘗試用 TSQLConnection + TSQLTable + TDataSetProvider + TClientDataSet,開啟加顯示一共需快兩分鐘,記憶體消耗148MB。 因此以二三的作法根本比不上一,三更是不能使用,差了很多,況且同樣是顯示在DBGrid上,記憶體也差了很多。即使效能一非常好,但是回到一我又得處理我解決不了的怪問題,這也是當初放棄的原因,請問各位大大有什麼建議嗎,還是先天FoxPro與MySQL的差異? PS:我所說的問題即在 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=79540 中,其實後來發現問題根本沒解決。 PS2: 另外小弟一更早也提過這個疑問 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=78134 ,有經驗的大大提供意見用分批顯示(控制傳回顯示的資料量),但是像一的方式完全不需要寫到code,也不需要特別控制,就可以達到高效率的表格操作,BDE + foxpro 效率真的是很令人訝異。 發表人 - taisun 於 2005/10/11 00:13:03 |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
taisun
一般會員 發表:10 回覆:8 積分:3 註冊:2005-08-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |