我自己写了一个分页存储过程,大家指点指点,第一次写存储过程,还有不少是不懂的,希望高手指点。create proc articlePages
@pageIndex int, --页数
@pageSize int, --页面显示的数据量
@dbFields varchar(1000) --查询的列名
as
declare @strSql varchar(5000) --查询的Sql语句if @pageIndex = '1'
set @strSql='select top'+ ' ' + str(@pageSize) + + ' ' + @dbFields + ' from article order by id desc'
else
begin
set @strSql = 'select top'+ ' ' + str(@pageSize) +' '+ @dbFields +' '+'from article'
set @strSql = @strSql + ' ' + 'where id <('
set @strSql = @strSql + 'select min(id) from ('
set @strSql = @strSql + 'select top '+ str((@pageIndex-1)*@pageSize) + +' id from article order by id desc) as t' +') order by id desc'
end exec(@strSql)GO直接输入页数就可以了,以下是我测试的结果,数据量是655351,呵呵,还不到百万数据啊。100页时 SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 1 毫秒。1000页时SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 7 毫秒。
10000页时SQL Server 执行时间:
CPU 时间 = 78 毫秒,耗费时间 = 108 毫秒。20000页时SQL Server 执行时间:
CPU 时间 = 172 毫秒,耗费时间 = 188 毫秒。
30000页时SQL Server 执行时间:
CPU 时间 = 265 毫秒,耗费时间 = 265 毫秒。
@pageIndex int, --页数
@pageSize int, --页面显示的数据量
@dbFields varchar(1000) --查询的列名
as
declare @strSql varchar(5000) --查询的Sql语句if @pageIndex = '1'
set @strSql='select top'+ ' ' + str(@pageSize) + + ' ' + @dbFields + ' from article order by id desc'
else
begin
set @strSql = 'select top'+ ' ' + str(@pageSize) +' '+ @dbFields +' '+'from article'
set @strSql = @strSql + ' ' + 'where id <('
set @strSql = @strSql + 'select min(id) from ('
set @strSql = @strSql + 'select top '+ str((@pageIndex-1)*@pageSize) + +' id from article order by id desc) as t' +') order by id desc'
end exec(@strSql)GO直接输入页数就可以了,以下是我测试的结果,数据量是655351,呵呵,还不到百万数据啊。100页时 SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 1 毫秒。1000页时SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 7 毫秒。
10000页时SQL Server 执行时间:
CPU 时间 = 78 毫秒,耗费时间 = 108 毫秒。20000页时SQL Server 执行时间:
CPU 时间 = 172 毫秒,耗费时间 = 188 毫秒。
30000页时SQL Server 执行时间:
CPU 时间 = 265 毫秒,耗费时间 = 265 毫秒。
解决方案 »
- 如何用socket发送XML数据,小弟菜鸟!!!
- 1000-7,1200-15,1500-30这样的数组如何拆分成2个数组
- 不刷新DataList的情况下,在ItemCommand在中取隐藏在Datalist控件的值?
- 前台对时间数据的对比判断
- 100分求DropDownList在运行时显示数据库外的文本,急,解决马上给分
- 客户的变态要求,跪求一个datagrid的问题,急!!!
- 如何获取DataGrid某行对应的DataTable中的行
- 页面之间传值为什么 ‘+’ 会消失??
- asp.net中使用CSS样式文件的问题
- datagrid控件编辑行时,是否可以让这行的编辑筐如datalist纵向排列?
- 求教form(表单)属性
- 关于查询问题
这个SQL语句是参考别人的,但是不知道性能怎么样啊
@pageSize int, --页面显示的数据量
@dbFields varchar(1000) --查询的列名只要传入这三个值就可以了,你想翻到哪页就向@pageIndex传入那页的页数,第一页就传入1。第二就2。大家给点改进的想法啊!