分页查询,新解

对于存储过程,不知道人们为什么 使用 not in 的方式来区分数据,其实 这样更加慢,对于一般的数据查询,结果的排序其实不是最主要的,效率才是最关键的,因此这里,不使用not in 的方式来查询 而是使用 top 排序的方式,如果查询的是前几页那么使用一种排序查询方式,而查询的是后几页就使用相反的一种排序方式,具体如何使用不同的排序,要根据页面索引来决定了,最好已总页的1/2为分解点

 

drop proc [Turnpage] go ------分页存储过程 CREATE PROC [dbo].[Turnpage]     @qCols varchar(200),                --需要查询的列     @qTables         varchar(200),       --需要查询的表和条件     @iKey         varchar (20),       --排序字段1 这里 排序字段1 和排序字段2 是正好想法的两种排序方式 例如 order by a desc 和 order by a asc     @oKey        varchar(20),        --排序字段2     @pageSize         int,                 --每页的行数     @pageNumber       int,                   --要显示的页码, 从开始  @p int--------显示的排序的方式          @p=0的话 是按照首次加载的方式来排序 AS set nocount on BEGIN     DECLARE @sqlText AS varchar(1000)     DECLARE @sqlTable AS varchar(1000)

    SET @sqlTable = 'SELECT  TOP ' + CAST((@pageNumber + 1) * @pageSize AS varchar(30)) + ' ' + @qCols +' from '+ @qTables + ' '+@oKey+ ''      SET @sqlText = 'select top '+CAST(@pageSize AS varchar(30))+' * '+ ' from ('+@sqlTable +') as table1 '+ @iKey+''      if(@p=0)   begin             EXEC (' select * from ('+@sqlText+') as table2 '+@oKey+ '')   end  else   begin             EXEC (' select * from ('+@sqlText+') as table2 ')   end

 --print(@sqltext) END go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值