我用ADO.net载入本地SQL数据到DataGridView中,不到五万笔记录,却花了近四分钟,有这么慢吗?比我们老系统的VFP还慢上十倍呀.因為这个表存储的是公司的料件信息呀,需要一次性全部载入到WinForm的DataGridView控件中,然后供用户筛选查找, 而非一般的记录性资料,只需查看近期的即可...所以最好在是不要用分頁在做即使是用分批载入的方法, 也会涉及到多个字段用模糊查询.
如下:SELECT * FROM Part WHERE filed1 LIKE '%ABC%' OR filed2 LIKE '%ABC%' ....
速度一样会很慢的﹐我試過用分頁做﹐在轉換到其他頁時﹐了得六七秒的時間(每頁才200行數据呀)該怎么解決這個問題﹒﹒

解决方案 »

  1.   

    1、楼主,你的表建了索引没?如果没建,一定要加上索引2、“ filed1   LIKE   '%ABC% '   OR   filed2   LIKE   '%ABC% ' ”这样的条件,检索起来会比较慢,因为是Full Table Scan方式,没用到索引
      

  2.   

    回复 ydsunny 
          有建立主鍵的﹐只是必須得做模糊查詢,而且還常常需要在查詢的結果上進行再一次模糊查詢﹐所以很慢﹐目前還沒有好的方案﹐回复jason909
            我有嘗試在表單的load事件中載入數据到DataSet中﹐然后綁定到BindingSource,最后將DGV的數据源設為BindingSource,但是這樣的話﹐從調用這個Form﹐到看到界面﹐需要四分多鐘才能完成﹒
      

  3.   

    如果你要用模糊查询,最好是建立"全文索引",这样能提升模糊查询的速度.
    5万笔记录,一次显示在界面上,是要花些时间的.如果你的内存够大,可把数据全装入内存表,然后通过DataView执行查询操作
      

  4.   

    TO﹕ydsunny
        1.什么是“全文索引" .
        2.是用DataView的Filter屬性來篩選數据嗎﹖
      

  5.   

    楼主你在baidu里搜"Sql 全文索引",可得到很多这方面的资料.呵呵,我平常比较喜欢用DataTable的Select方法来查询数据,如:
    DataRow[] rows=dtTable.Select("filed1="+strPrams);
      

  6.   

    TO: ydsunny  
     
        有查過"百度"﹐ 好像全文索引只能在基表上定義﹐而我這個是視圖﹐可能在是沒辦法的.﹒﹒﹒
      

  7.   

    TO: fuadam
        即使是用分批载入的方法,   也会涉及到多个字段用模糊查询. 
    如下:SELECT   *   FROM   Part   WHERE   filed1   LIKE   '%ABC% '   OR   filed2   LIKE   '%ABC% '   .... 
    速度一样会很慢的﹐我試過用分頁做﹐在轉換到其他頁時﹐了得六七秒的時間(每頁才200行數据呀) 
      

  8.   

    你的数据表有多大啊,你使用datareader还是dataset读的
      

  9.   

    尽量用repeater吧.要用grid把视图状态关了.用存储过程分页.少用like