zoukankan      html  css  js  c++  java
  • 简单高效的分页解决方案

        项目需求:数据库有5000条记录,每页显示20条,要求实现每翻一页就读取当前页的20条数据;

        解决方案:根据传入的页码和每页显示的记录数查询出相应的数据

                    1>第一页:select Top 10 * from TableName

                    2>以后各页:select row_number() over(order by code) rownum,* into #table  from [tableName]                            

                   select * from #table where rownum in (@CurrentPageIndex*@PageSize+1,@CurrentPageIndex*@PageSize+10)

                     //注:(@CurrentPageIndex为传入的当前页的页码,@PageSize为每页显示的记录的条数)

                    


    -- =============================================
    -- Author:  <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description: <Description,,>
    -- =============================================
    alter PROCEDURE [dbo].[sp_PageView]
     @strSql nvarchar(1000),
     @FieldKey nvarchar(1000), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段
     @PageCurrent int=1,       --要显示的页码
     @PageSize int=10,         --每页的大小(记录数)
     @PageCount int OUTPUT,    --总页数
     @ListCount int OUTPUT     --数据总条数

    AS
    BEGIN

        IF @PageCount IS NULL OR @PageCount=0
     BEGIN
        declare @sqlListCount nvarchar(2000),@sqlstr nvarchar(2000),@mod int,@except int
        set @sqlListCount=N'select @a=count(1) from ('+@strSql+')t'
        exec sp_executesql @sqlListCount,N'@a int output',@ListCount output

        set @mod   = @ListCount % @PageSize
        set @except= @ListCount / @PageSize
        if @mod=0
           begin
              set @PageCount =@except
           end
        else
           begin
              set @PageCount =@except+1
           end
     END

       set @sqlstr=N'select * from ('
                  +N'select row_number() over (order by '+@FieldKey+') rownum,'+substring(ltrim(lower(@strSql)),7,3000)
                  +N')z where rownum between '+cast(((@PageCurrent-1)*@PageSize+1) as nvarchar(20))
                  +N' and '+cast(@PageCurrent*@PageSize as nvarchar(20))
       exec (@sqlstr)
       --select @ListCount,@PageCount
    END


     

  • 相关阅读:
    ngx_lua_waf
    一致性hash算法
    BloomFilter理解
    SkipList理解
    es中的一些知识点记录
    普通类、抽象类和接口区别:
    spring中的事件 applicationevent 讲的确实不错(转)
    CMS和G1的区别,以及Parallel
    SpringBoot优化内嵌的Tomcat ---设置MaxConnections
    tomcat启动nio,apr详解以及配置
  • 原文地址:https://www.cnblogs.com/zhangzt/p/1621660.html
Copyright © 2011-2022 走看看