昨天分全在ASP版散了,今天就剩10分,想请教一下关于SQL2005,提升翻页性能。 10FEB15]

发布时间:2016-12-9 17:54:09 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"昨天分全在ASP版散了,今天就剩10分,想请教一下关于SQL2005,提升翻页性能。 10FEB15]",主要涉及到昨天分全在ASP版散了,今天就剩10分,想请教一下关于SQL2005,提升翻页性能。 10FEB15]方面的内容,对于昨天分全在ASP版散了,今天就剩10分,想请教一下关于SQL2005,提升翻页性能。 10FEB15]感兴趣的同学可以参考一下。

Select * From ( Select *,ROW_NUMBER() Over (Order by ID) AS [No] From 表 )AS A Where A.[No] > 0 and A.[No] < 100000 如何利用上面的提升翻页性能? 直接前台代码翻(记录集),或者存储过程翻。

应该用存储过程。 ROW_NUMBER() 方式省却了原来的插入表变量或临时表得到顺序编号的几步。整体上提高了性能。Oracle早就有rownumber方式,因此现在的SQL Server 2005 的存储过程和Oracle的分页方式几乎相同。 我用ROW_NUMBER()方式的分页在100W记录中返回任意10条记录都在1秒之内。而同等环境下,用表变量或临时表要4秒左右。

IF Firstdate="" Then Firstdate=Date End IF'判断第一个日期是否空 IF Seconddate="" Then Seconddate=Date+1 End IF'判断第二个日期是否空 IF Firstdate=Seconddate Then Seconddate=DateAdd("d", 1, Seconddate) End IF'判断两个日期是否相等,如果日期相等数据库不返回数据 IF order="" Then order="Order By Addtime Desc" End IF'判断order是否为空 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '翻页 IF Not IsNumeric(Request("page")) Or IsEmpty(Request("page")) Or Request("page") <=0 Then MyPage=1 Else MyPage=Int(Abs(Request("page"))) End IF Total =Conn.Execute("Select Count(*) AS ListCount From Sys_Log Where Addtime between '"&Firstdate&"' and '"&Seconddate&"'") Total =Total("ListCount") '总记录数 MyPageSize =30 '每页显示多少条 MaxPages =int(Total/MyPageSize) '计算多少页 IF Total Mod MyPageSize >=1 Then MaxPages=MaxPages+1 End IF List_No2 =MyPage*MyPageSize '当前页记录最后数 List_No1 =List_No2-MyPageSize '当前页记录开始数 Response.Write(List_No1&" - "&List_No2) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Set RS =GetRSForRead("Select * From (Select *,ROW_NUMBER() Over (Order by ID) AS List_No From Sys_Log Where Addtime between '"&Firstdate&"' and '"&Seconddate&"')AS A Where A.List_No > "&List_No1&" and A.List_No <= "&List_No2&" "&order&"") 循环开始 循环结束 Response.Write("<a href='?Firstdate="&Firstdate&"&Seconddate="&Seconddate&"&order="&order&"&page=1'><font face=webdings title='First page'>9</font></a>") IF MyPage-1>=1 Then Response.Write(" <a href='?Firstdate="&Firstdate&"&Seconddate="&Seconddate&"&order="&order&"&page=" & MyPage-1 & "'><font face=webdings title='Up'>7</font></a>") End IF IF MyPage+1<=MaxPages Then Response.Write(" <a href='?Firstdate="&Firstdate&"&Seconddate="&Seconddate&"&order="&order&"&page=" & MyPage+1 & "'><font face=webdings title='Next'>8</font></a>") End IF Response.Write(" <A href='?Firstdate="&Firstdate&"&Seconddate="&Seconddate&"&order="&order&"&page=" &MaxPages& "'><font face=webdings title='End page, "& Pagetpage &"'>:</font></A>") Response.Write(" = "&Total) ---------------------------------------- 上面是自己写的 用SQL2005 ROW_NUMBER() 的分页,纯代码版,希望哪位高人出存储过程版 或 优化版

上面的是ASP版

做过简单的测试 原始的ASP代码 记录集 来分页的话同数据量 1,031.250毫秒 数据量增加 时长 也递增 量月大越慢。 而用新的ROW_NUMBER() 分页,同数据量 62.500毫秒  数据量增大 时长 变浮微小 没有多大感觉,只是不能灵活排序。

上一篇:sql2005简体中文开发版下载错了????????/ 20xusongbo]
下一篇:sql2005配置问题 100CSDN]

相关文章

相关评论