[問題] asp.net + linq to sql

看板C_Sharp (C#)作者 (沒有名字的怪物)時間8年前 (2017/07/14 20:58), 8年前編輯推噓7(7015)
留言22則, 5人參與, 最新討論串1/1
各位晚安 請教個問題,我的環境是asp.net c# + MSSQL 透過linq to sql讀取資料庫資料,用gridview去顯示 但是當資料筆數很大時(約10萬筆),要載入頁面時就很慢 有沒有什麼辦法可以改善呢??? 是得要用ajax嗎? 我是都這樣讀取資料的 var res = from t in myDB.commandrecords orderby t.item_no descending select t; GridView1.DataSource = res; GridView1.DataBind(); 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.91.30 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1500037111.A.1DB.html

07/14 21:09, , 1F
gridview有做分頁嗎?
07/14 21:09, 1F

07/14 21:09, , 2F
另外 撈10萬筆出來全部長到網頁上當然會慢QQ
07/14 21:09, 2F

07/14 22:16, , 3F
有,那怎麼做到"點下一頁,再載入呢"?
07/14 22:16, 3F

07/14 23:03, , 4F
myDB.commandrecords.Skip(pageIndex * pageCount).Select(p
07/14 23:03, 4F

07/14 23:03, , 5F
=> p);
07/14 23:03, 5F

07/14 23:04, , 6F
啊,.Skip前面要加入.OrderByDescending(p => p.item_no)
07/14 23:04, 6F

07/14 23:11, , 7F
阿,抱歉 剛剛想到.Select應該要改成.Take(pageCount)就好
07/14 23:11, 7F

07/14 23:11, , 8F
這樣就變成每次只取特定範圍的筆數了
07/14 23:11, 8F

07/15 02:15, , 9F
10萬筆光DB就要跑多久了 更何況是程式
07/15 02:15, 9F

07/15 06:58, , 10F
查怎麼用 Skip 與 Take 做資料分頁
07/15 06:58, 10F

07/15 12:01, , 11F
所以不要依賴系統預設的
07/15 12:01, 11F

07/15 12:17, , 12F
如果是直接用gridview吃Linq(/EF)DataSource控制項,印象中
07/15 12:17, 12F

07/15 12:17, , 13F
會搭配GridView做分頁,但若是自己寫的話就得一切手動了0rz
07/15 12:17, 13F
J002大大,我原本的寫法就是利用gridview去做分頁。 那跟自己手動去處理分頁,有何差異呢? 手動效能會較好嗎?? ※ 編輯: areyo (1.174.247.226), 07/15/2017 16:31:02

07/15 16:37, , 14F
印象gridview分頁只是分你餵給他的source內的資料
07/15 16:37, 14F

07/15 16:37, , 15F
我通常是餵給他10筆實際資料 告訴他分頁器有100頁
07/15 16:37, 15F

07/15 16:38, , 16F
在點分頁器第2頁時再去撈11~20筆實際資料
07/15 16:38, 16F

07/16 00:36, , 17F
印象中,用gridview接datasource控制項的話他會自己去撈指定
07/16 00:36, 17F

07/16 00:37, , 18F
範圍內的資料,並同時計算頁數那些。但若是自己來的話,就要
07/16 00:37, 18F

07/16 00:38, , 19F
自己處理,但您的寫法就是會撈了全部資料後再讓gridview分頁
07/16 00:38, 19F

07/16 00:38, , 20F
當然會比較慢一些@@"
07/16 00:38, 20F

07/16 00:40, , 21F
ian90911大說的方法就是手動的話,需要做的事情。
07/16 00:40, 21F

07/16 08:22, , 22F
謝謝兩位
07/16 08:22, 22F
文章代碼(AID): #1PQB_t7R (C_Sharp)
文章代碼(AID): #1PQB_t7R (C_Sharp)