RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [其他] [求助]請教 VB.NET 2005 DataGridView 的效率   字型大小:||| 
htkstw
銀驢友〔初級〕
等級: 12等級: 12等級: 12


 . 積分: 356
 . 文章: 823
 . 收花: 2456 支
 . 送花: 4626 支
 . 比例: 1.88
 . 在線: 2123 小時
 . 瀏覽: 25311 頁
 . 註冊: 7991
 . 失蹤: 9
 . 台灣高雄市
#1 : 2007-2-16 06:53 PM     只看本作者 引言回覆

剛想從 VB6 想跳至 VB.NET 2005 就遇到這個棘手的問題...

我用DataGridView顯示一個陣列清單的資料, 資料筆數是10000筆, 結果要等上7~10秒鐘才會顯示出來, 經過我找尋解決的方法後, 只要 VirtualMode 設成 True, AutoSizeColumnsMode 設成 None, 效率則可以大大的提升到瞬間即顯示出來.

現在我再用DataGridView直接連結oledb資料庫來顯示資料, 資料筆數是16000筆, 結果要等上10~15秒鐘才會顯示出來, 即使以上述方法也沒辦法有效率的立即顯示出來.

我在網路上找了好久, 一直沒找到關於這方面的資訊. 大陸那邊有人說過連結資料庫要顯示大量資料時, DataGridView 的效率是很差的, 這是真的嗎? 請問有沒有辦法解決?

謝謝.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
steven211
開墾隊隊員
等級: 4


今日心情

 . 積分: 32
 . 文章: 64
 . 收花: 167 支
 . 送花: 131 支
 . 比例: 0.78
 . 在線: 338 小時
 . 瀏覽: 5290 頁
 . 註冊: 6910
 . 失蹤: 2714
#2 : 2007-2-19 10:26 PM     只看本作者 引言回覆

這個問題跟我上次遇到的有點類似,
http://twed2k.org/viewthread.php?tid=131037&extra=page%3D1
我想主要的速度瓶頸是出在broser吧!
當broser接收網頁的Tag然後轉成我們可視的網頁時也是需要CPU下去處理的,
當你遇到資料一多時就是會發生這種問題,
你可以先打開工作管理員並在Load網頁的時候觀查看看CPU是否滿載,
你是做統計分析類的報表嗎?
不然可以嘗試用使用分頁顯示。



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
htkstw
銀驢友〔初級〕
等級: 12等級: 12等級: 12


 . 積分: 356
 . 文章: 823
 . 收花: 2456 支
 . 送花: 4626 支
 . 比例: 1.88
 . 在線: 2123 小時
 . 瀏覽: 25311 頁
 . 註冊: 7991
 . 失蹤: 9
 . 台灣高雄市
#3 : 2007-2-20 10:35 AM     只看本作者 引言回覆

糟了!也許是發在這一區, 讓你誤認為是網頁相關的程式問題, 其實不是, 純粹是windows應用程式的問題.

搞了這許多天來, DataGridView這個問題始終還是沒解. 真是讓我很奇怪, 怎麼大家都沒遇到這種狀況嗎? 如果真是這樣, 那應該是我個人寫程式的關係了, 只是一直找不到答案, 所以也一直卡在這裡.

我前天做了一個小實驗, 以3600筆6個欄位的資料來做, 一樣DataGridView繫結資料庫直接顯示出來要5~6秒(這也太離譜了!). 但是如果只用變數取出來, 不在DataGridView顯示, 則是立即就完成了, 這中間還需要先經過判斷是否為NULL值呢! 由此我判斷, 問題應該不在於資料庫物件, 而在於DataGridView物件本身了.

如果再參考到我上面說的第一例, 我想, 應該在DataGridView物件在取出資料並顯示的這一段過程的問題, 只是如何解決我一直找不到, 啊~~~~~太悲慘了!



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
ithinkurdumb
開墾隊隊員
等級: 11等級: 11等級: 11等級: 11
(見下圖)

 . 積分: 326
 . 文章: 574
 . 收花: 2842 支
 . 送花: 381 支
 . 比例: 0.13
 . 在線: 495 小時
 . 瀏覽: 4740 頁
 . 註冊: 7025
 . 失蹤: 495
 . Taipei
#4 : 2007-3-3 04:24 PM     只看本作者 引言回覆

第一個問題是因為ADO.NET是針對SqlClient來開發的,
所以碰到OleDbClient的時候一定有performance penalty,
要是資料量狠大,
penalty會相當嚴重.
這也是為什麼Microsoft這兩年來一直在鼓勵developers把Windows Application的資料庫從Access改成SQL Express或是SQL Mobile.

其次是DataGridView本身的設計所造成的.
DataGridView是一個非常有彈性的架構,
不過預設並沒有對大量的資料做最佳化.
關於如何將DataGridView針對大量的資料做最佳化,
可以參考這篇MSDN: http://msdn2.microsoft.com/en-us/library/ha5xt0d9.aspx
其他的資料可以參考: http://msdn2.microsoft.com/en-us/library/ms171621.aspx

最後還有一點在某些情況也能夠大幅提高效能,
就是在能用DataReader的時候盡量用.
如果只是要從database把資料拉出來,
而且不需要排序 (或是能用sql query / stored procedure等等來排序),
就使用DataReader.
DataReader的效率是所有data access method中最好的 (而且超出其他狠多).

希望有幫助囉 ;)



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
dayi
開墾隊隊員
等級: 14等級: 14等級: 14等級: 14
ZeroX

十週年紀念徽章(五級)  

今日心情

 . 積分: 935
 . 文章: 2060
 . 收花: 7802 支
 . 送花: 2401 支
 . 比例: 0.31
 . 在線: 2821 小時
 . 瀏覽: 61582 頁
 . 註冊: 6912
 . 失蹤: 1011
 . ZeroX
#5 : 2007-3-3 06:25 PM     只看本作者 引言回覆

先說明,我沒實做過.net的DataGridView
我是用java做過datagrid
在遇到大量資料時會"爆慢",十萬筆要等上一分多鐘
後來找出原因
是在於datagrid要滿足一個條件
"資料全部fetch到本端"
這時才會顯示
後來我就在datagrid上動手腳,給一個fetch row的變數 N
datagrid只要抓到N rows之後就當做完成,便把資料顯示出來
再利用元件本身是動態資料來源的特性,在後端繼續把資料丟到grid裡
這樣就可以達到效率和資料完整性的平衡

給您參考一下



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
ma1111
鐵驢友〔高級〕
等級: 6等級: 6


今日心情

 . 積分: 69
 . 文章: 450
 . 收花: 373 支
 . 送花: 396 支
 . 比例: 1.06
 . 在線: 658 小時
 . 瀏覽: 13766 頁
 . 註冊: 7545
 . 失蹤: 517
#6 : 2008-3-29 07:41 PM     只看本作者 引言回覆

天下沒有白吃的午餐,
這種RAD導向的控制項效率一向如此,
重點在fetch cache的時間點及地方,
樓上有些建議是可行的



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
psycho
鐵驢友〔初級〕
等級: 4


 . 積分: 42
 . 文章: 137
 . 收花: 353 支
 . 送花: 29 支
 . 比例: 0.08
 . 在線: 263 小時
 . 瀏覽: 1660 頁
 . 註冊: 5923
 . 失蹤: 4120
#7 : 2008-4-4 11:48 AM     只看本作者 引言回覆

JAVA 可以用ajax和comet
來傳資料



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
soupjvc999
開墾隊副隊長
等級: 4


今日心情

 . 積分: 38
 . 文章: 277
 . 收花: 194 支
 . 送花: 77 支
 . 比例: 0.4
 . 在線: 132 小時
 . 瀏覽: 2100 頁
 . 註冊: 7950
 . 失蹤: 4811
 . 溺死單字海
#8 : 2008-4-18 02:25 PM     只看本作者 引言回覆

ithinkurdumb  與  dayi的方法不錯喔!!
受教了!!



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-4-19 06:50 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.017587 second(s), 6 queries , Qzip disabled