者,使用sql server 2005中的row_number()函数
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
(小技巧:将记录总数保为Cache或Session来提高分页性能。)
7、不要禁用 Web 窗体页的缓冲
除非有特殊的原因要关闭缓冲,否则使其保持打开。禁用 Web 窗体页的缓冲会导致大量的性能开销。
启用页面输出的缓冲区(Buffer)
如果Buffer的机制被关闭,可以用下面的方法打开。
使用程序打开页面输出缓存:
Response.BufferOutput = true;
使用@Page开关打开页面输出缓冲机制:
<%@ Page Buffer = "true" %>
使用Web.config或Machine.config配置文件的<pages>节点:
<pages buffer="true"/>
8、设置page的smart navigation属性
smart navigation设置为true能让用户明显的感觉性能提高。启用此属性后对客户端和服务端影响不大.它能智能刷新需要刷新的部分。
在大多数情况下不要在代码中设置该属性。
在 .aspx 文件的 @ Page 指令中将 SmartNavigation 属性设置为 true。请求该页时,动态生成的类将设置该属性。
Internet Explorer 5 或更高版本浏览器请求页时(或稍后),智能导航将通过执行下列功能提高用户对该页的操作能力:
消除导航导致的闪烁。
从一页移动到另一页时保持滚动位置。
保持导航之间的元素焦点。
在浏览器的历史记录中只保留最后一页的状态。
智能导航最适用于需要频繁回发,但是其内容在返回时不会发生显著更改的 ASP.NET 页。在决定是否将该属性设置为 true 时,请仔细考虑这一点。