|
SELECT TOP PAGESIZE NEWSTITLE
FORM NEWSINFO WHERE NEWSID NOT IN
(SELECT TOP (PAGE-1)* PAGESIZE NEWSID FROM NEWSINFO
WHERE Auditing=1 and NEWSBREED='企業新聞' order by NEWSID DESC)
AND Auditing=1 and NEWSBREED='企業新聞' order by NEWSID DESC
其中:PAGE表示當前頁數,PAGESIZE表示頁的大小;這里利用了NOT IN,不復合SARG,但總比一次讀取全部的記錄要好的多。
2、符合 SARG的代碼
針對本人的實例還有一個更好的方案:因為NEWSID字段是自增字段,對于NOT IN 語句進行如下的改造,并不影響結果。但速度提高了很多
SELECT TOP PAGESIZE NEWSTITLE
FORM NEWSINFO WHERE NEWSID <
(SELECT MIN(NEWSID) FROM (SELECT TOP (PAGE-1) * PAGESIZE NEWSID FROM NEWSINFO WHERE Auditing=1 and NEWSBREED='企業新聞' order by NEWSID DESC) AS TB)AND Auditing=1 and NEWSBREED='企業新聞' order by NEWSID DESC
【說明】
對于在多處使用分頁功能的web 應用程序,把SQL語句改為存儲過程將會更好。
請大家積極參與討論分頁的算法,并把好的方案與大家分享。
AspNet技術:asp.net下經典數據庫記錄分頁代碼,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。