者,使用sql server 2005中的row_number()函數(shù)
declare @sql varchar(8000)
set @sql='select *'
+' from'
+' ('
+' select row_number() over (order by id desc) as rowNumber,*'
+' from Users'
+' where id>0 and name<>'''''
+' )'
+' as table1'
+' where rowNumber between '+str((@page-1)*@pagesize+1)+' AND '+str(@page*@pagesize)
+' order by id desc'
--exec (@sql)
EXEC sp_ExecuteSql @sql
(小技巧:將記錄總數(shù)保為Cache或Session來提高分頁性能。)
7、不要禁用 Web 窗體頁的緩沖
除非有特殊的原因要關(guān)閉緩沖,否則使其保持打開。禁用 Web 窗體頁的緩沖會導(dǎo)致大量的性能開銷。
啟用頁面輸出的緩沖區(qū)(Buffer)
如果Buffer的機(jī)制被關(guān)閉,可以用下面的方法打開。
使用程序打開頁面輸出緩存:
Response.BufferOutput = true;
使用@Page開關(guān)打開頁面輸出緩沖機(jī)制:
<%@ Page Buffer = "true" %>
使用Web.config或Machine.config配置文件的<pages>節(jié)點:
<pages buffer="true"/>
8、設(shè)置page的smart navigation屬性
smart navigation設(shè)置為true能讓用戶明顯的感覺性能提高。啟用此屬性后對客戶端和服務(wù)端影響不大.它能智能刷新需要刷新的部分。
在大多數(shù)情況下不要在代碼中設(shè)置該屬性。
在 .aspx 文件的 @ Page 指令中將 SmartNavigation 屬性設(shè)置為 true。請求該頁時,動態(tài)生成的類將設(shè)置該屬性。
Internet Explorer 5 或更高版本瀏覽器請求頁時(或稍后),智能導(dǎo)航將通過執(zhí)行下列功能提高用戶對該頁的操作能力:
消除導(dǎo)航導(dǎo)致的閃爍。
從一頁移動到另一頁時保持滾動位置。
保持導(dǎo)航之間的元素焦點。
在瀏覽器的歷史記錄中只保留最后一頁的狀態(tài)。
智能導(dǎo)航最適用于需要頻繁回發(fā),但是其內(nèi)容在返回時不會發(fā)生顯著更改的 ASP.NET 頁。在決定是否將該屬性設(shè)置為 true 時,請仔細(xì)考慮這一點。