Re: [問題] 在ASP.NET 2.0上面 如何實作paging

看板C_Sharp (C#)作者 (待救的小米)時間20年前 (2004/11/07 18:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《tomex (tomex_ou)》之銘言: : ※ 引述《seagal (待救的小米)》之銘言: : : 就例如一個從資料庫取出的表格 : : 內容有一百萬筆 : : 而我一次只秀10筆 : : 如何做到翻頁的功能 : : 例如使用MS SQL TOP指令 : : 但這資料量一多效能就很差了 我貼上一段TOP的選法 curpage=Integer.parseInt(request.getParameter("page"));//顯示的頁 ResultSet rs=cn.rsexecuteQuery("select top "+page_record+" * from tablename where id not in (select top "+(curpage*page_record)+" id from tablename order by id desc) order by id desc"); 我們可以發現他事實上是做兩次select 先選出小集合 再把大集合減掉小集合 就是你要的那個page的資料 萬一table裡又沒主索引鍵 那就更慘了 效能應該會很差 詳細的討論可以參考javaworld http://www.javaworld.com.tw/jute/post/view?bid=6&id=12796&sty=1&tpg=1&age=-1 ASP.NET 2.0難道沒更好的解法嗎? 用上面的解法 感覺跟弄出一個DataSet再翻頁 要寫差不多的碼 其實我對效能不會很在意啦 2.0有專門在講ADO.NET 2.0 cache的技術 我都沒去看 哈 少寫一些程式碼我比較關心:) : 我以為也對翻頁時的效能作過分析,覺得每次只看一頁的資料量 : 卻每次都會databind()整個sql指令資料量,很浪費效能 : 就花時間去研究怎麼計算存取的筆數,讓它最適合效能。 : 但翻頁的button因為資料量少了,也就沒顯示... : 後來我同事跟我說,web page本來每頁翻新就要databin()一次 : 超連結是方便的,但卻無法保留變數值,所以重bind()是必要,也免不了! : 況且db針對上次sql的內容其實有cache在記憶體 : 再重撈一次,其實對效能不會浪費更多! : 這時候我才釋懷,只要效能不差,就沒必須花時間計算撈取的range筆數 : 況且萬一是多人使用的,資料變動很厲害,我們用心計算的range值可能會造成miss : so... 還是先不要擔心效能問題,以後面對瓶頸時,應該放重心在sql的寫法 : 讓資料量更少。 -- 生物資訊研究室:每天都會更新文件,提供生物資訊教學 http://www.bioinformatic.idv.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.73.177
文章代碼(AID): #11ZVMTFP (C_Sharp)
文章代碼(AID): #11ZVMTFP (C_Sharp)