熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

asp.net下經典數據庫記錄分頁代碼

2013-11-13 10:12:10  來源: .NET編程 
   
    SELECT TOP PAGESIZE NEWSTITLE
    FORM NEWSINFO WHERE NEWSID NOT IN
    (SELECT TOP (PAGE)* PAGESIZE NEWSID FROM NEWSINFO
    WHERE Auditing= and NEWSBREED=企業新聞 order by NEWSID DESC)
    AND Auditing= and NEWSBREED=企業新聞 order by NEWSID DESC
    其中PAGE表示當前頁數PAGESIZE表示頁的大小這裡利用了NOT IN不復合SARG但總比一次讀取全部的記錄要好的多
    符合 SARG的代碼
    針對本人的實例還有一個更好的方案因為NEWSID字段是自增字段對於NOT IN 語句進行如下的改造並不影響結果但速度提高了很多
    SELECT TOP PAGESIZE NEWSTITLE
    FORM NEWSINFO WHERE NEWSID <
    (SELECT MIN(NEWSID) FROM (SELECT TOP (PAGE) * PAGESIZE NEWSID FROM NEWSINFO WHERE Auditing= and NEWSBREED=企業新聞 order by NEWSID DESC) AS TB)AND Auditing= and NEWSBREED=企業新聞 order by NEWSID DESC
    【說明】
    對於在多處使用分頁功能的web 應用程序把SQL語句改為存儲過程將會更好
    請大家積極參與討論分頁的算法並把好的方案與大家分享
From:http://tw.wingwit.com/Article/program/net/201311/12887.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.