如題,一個ADOQuery遠程連接了一個資料庫,執行一條SQL陳述句,結果有10萬條記錄,請教各位高手,這種情況下客戶端直接ADOQuery查詢會不會出現程式無法回應的情況?
以及這么多的記錄傳到客戶端時改如何處理?
環境是局域網,萬分感謝大家指點!
uj5u.com熱心網友回復:
用到多少條記錄就回傳多少條,處理完這一段再繼續回傳下一段,如此反復直到10萬條都搞完,而不是一次性回傳所有記錄。很簡單的道理,就好比分頁顯示資料,假設一個螢屏只能顯示30行資料,那就請求回傳30條資料,點下一頁時就回傳下30條資料,而不是每次都向服務器請求回傳全部資料,既費帶寬又費cpu。uj5u.com熱心網友回復:
如果這10萬條資料要回傳后立即處理,那就用多條執行緒去分段請求資料,就跟多執行緒下載檔案一個道理。uj5u.com熱心網友回復:
萬分感謝“專業擼過”,能否給一些例子代碼看看,謝謝!uj5u.com熱心網友回復:
原始ADO是可以取的,至于c++builder里面的ado控制元件是有超時無回應的,最好自己用tcp傳輸uj5u.com熱心網友回復:
謝謝nextseconds,我感覺如果直接用ADO會有很多問題uj5u.com熱心網友回復:
10萬條記錄,確定你不需要分頁?uj5u.com熱心網友回復:
一次取到客戶端記憶體里了。uj5u.com熱心網友回復:
用ado一次回傳10萬條記錄小意思,我曾經一次取回sqlserver2000的3個欄位的40w條記錄在DBGrid里列出,沒有任何問題,DBGrid反應也很快,不過這么多都取回來沒什么用
uj5u.com熱心網友回復:
如果ADO出現例外你可以ping一下服務器,一般會有大量的斷點,解決方法是延長ADO的回應時間,最根本的是解決這種網路例外,因為這種時候大多數CS程式的連接都會出現問題ADO是很完美的,SQLSERVER2000也是一個經典的產品,只是Access不盡如人意
uj5u.com熱心網友回復:
要看資料量的,如果一條記錄1K位元組,10W就是100M位元組,局域網下用戶少時還勉強能接受,如果一條記錄10K,那么就是1G位元組,單用戶都成問題了。uj5u.com熱心網友回復:
是了,1k位元組很大了,大概只有文章系統才會用這么多位元組了
uj5u.com熱心網友回復:
我的文章系統的標題的欄位總長度才設為40字符,一般的標題用到的最長也就20字符,文章內容就可以很長了。一般是先列出標題,用戶根據標題選文章,當用戶要看文章時再用另一控制元件執行一次查詢取回文章內容。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133520.html
標籤:數據庫及相關技術
上一篇:求救!!!
