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